首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能对UITableView header中的照片应用约束?

UITableView header中的照片不能应用约束的原因是因为UITableView的header视图是通过UITableViewDelegate的tableView(_:viewForHeaderInSection:)方法返回的一个UIView对象,而UIView对象默认是不支持自动布局的。因此,无法直接对UITableView header中的照片应用约束。

然而,可以通过以下两种方法来实现对UITableView header中的照片应用约束:

  1. 使用自定义的UITableViewHeaderFooterView:通过继承UITableViewHeaderFooterView并在其内部添加照片视图,并使用Auto Layout来对照片视图应用约束。然后,通过UITableViewDelegate的tableView(_:viewForHeaderInSection:)方法返回自定义的UITableViewHeaderFooterView对象作为header视图。

示例代码:

代码语言:txt
复制
class CustomHeaderView: UITableViewHeaderFooterView {
    let photoImageView: UIImageView = {
        let imageView = UIImageView()
        imageView.translatesAutoresizingMaskIntoConstraints = false
        // 添加照片视图的约束
        // ...
        return imageView
    }()
    
    override init(reuseIdentifier: String?) {
        super.init(reuseIdentifier: reuseIdentifier)
        // 添加照片视图到header视图
        addSubview(photoImageView)
        // ...
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "CustomHeaderView") as? CustomHeaderView
    // 配置header视图
    // ...
    return headerView
}
  1. 使用Auto Layout的辅助视图:在UITableView header中添加一个辅助视图,将照片视图作为辅助视图的子视图,并对辅助视图应用约束。这样,间接地实现了对UITableView header中的照片应用约束。

示例代码:

代码语言:txt
复制
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "UITableViewHeaderFooterView")
    let photoImageView = UIImageView()
    photoImageView.translatesAutoresizingMaskIntoConstraints = false
    // 添加照片视图到辅助视图
    headerView?.addSubview(photoImageView)
    // 对辅助视图应用约束
    // ...
    return headerView
}

以上两种方法都可以实现对UITableView header中的照片应用约束,具体选择哪种方法取决于具体需求和实现方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IOS学习——iphone X的适配

] 自定义的导航栏的返回按钮右移明显 UISearchBar的高度有变化,而且点击之后背景颜色和原先不一致 UITableview的header高度变大,有的地方会出现空白cell格 UITableview...这也就是为什么我们的返回键的位置会右移的原因了。   ...UITableview的header高度变大,有的地方会出现空白cell格   iOS 11中对UITableview的改变也是蛮大的,原本的automaticallyAdjustsScrollViewInsets...并且在iOS 11中如果没有重写header、footer的height和view函数,iOS 11中系统不会像之前那样自动调用。...UITableview出现的位置不对   和问题4中的问题一样,都是UITableview的问题,主要原因还是iOS 11中automaticallyAdjustsScrollViewInsets过期了

1.5K60

有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?

其实我也很希望自家的应用都像网易那样,固定长度显示新闻,显示不完,就直接截断--可惜那样的应用都是别人公司的应用.可能你会说: 顶部给个非微博正文区域给个固定高度;文字区域动态计算出高度;图片部分,图片高度固定...为什么我现在不再害怕写UITabelView的自适应布局?...是的,我现在一点也不担心去处理各种UITabelView布局.不是因为我有一股所谓的不畏艰难的伟大工作精神,而是因为我切实找到了解决办法.具体该怎么做呢?...Masonry — 使用纯代码进行iOS应用的autolayout自适应布局 2.使用 UITableView-FDTemplateLayoutCell 根据单元格内容的约束自适应单元格高度 ?...示例下载地址: 点击下载 非常感谢 @未来帅哥 的讨论,给了我很大启发和帮助,我也如约做了一个关于Masonry 和 UITableView-FDTemplateLayoutCell结合使用的小例子,以解决他的问题

92260
  • iOS开发中行高灵活可变的UITableView的性能优化

    iOS开发中行高灵活可变的UITableView的性能优化 一、UITableView的构建原理         在新闻类,电商类等应用中,应用着大量的图文混排视图,在表视图UITableView中,...至于为何UITableView在进行配置时也需要拉取所有的行高数据,我猜想其为了进行视图的一些初始化操作,例如表视图右侧滚动条的宽度和所占比例等。...我个人更倾向将行高数据封装进cell的数据模型Model中。         通过优化,可以有效的减少重复的高度计算,这也是我原先处理此类问题的主要方式。...在iOS7系统之后,UITableView类中增加了一个estimatedRowHeight属性,顾名思义,这个属性是设置UITableViewCell中的大约行高值。...例如下图所示,左侧的图标进行了与父视图的左侧距离约束,标题Label进行了与父视图的上侧距离约束和右侧距离约束,内容Label进行了与标题Label的上侧约束和与父视图的下册约束,并且对宽度进行了约束。

    2K20

    iOS开发过程中的奇淫技巧记录

    为了修改带分组tableview的section header跟随置顶的问题,网上的奇淫技巧比方通过修改scroller的回调方法,体验不好,正规的方法是修改为tableView的UITableViewStyleGrouped...模式,但该模式下列表section Header的高度过高,需要设置一个footer的高度: - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection...,最原始的就是frame,如果是使用约束,也需要至少指定左、上,宽、高,否则约束会出现异常(xib中配置约束或者使用Masonry配置约束),比方设置一个view在屏幕的底部的约束: [view mas_makeConstraints...,搜索框的背景修改,网上都有很多奇淫技巧,发现都不正规,正规的改法往往很简单,原因在于控件有很多层次,由于没有找到背景所在的正确的层级,所以你发现很多的设置不生效,关键的点是经常使用Debug View...Hierarchy观察你想要修改的控件对象,这时候修改才会一步到位,比方搜索框的背景修改: 不生效:     self.searchBar.backgroundColor = UIColorMake(

    60620

    列表滑动展开隐藏头部HeaderView

    先看一下效果图 首先看一下BiliBili客户端的视频浏览界面。默认界面Header完全展开,并且Header显示AV号(别乱想,就是视频编号了)以及播放按钮。...滑动之后Header被压缩,按钮移到AV号左边。 ? 我就照着界面简单实现了主要功能,比较简陋。对于按钮移动的动画就没有去花时间还原了,毕竟这里主要是为了实现滚动压缩、展开Header,动画不讨论。...为了让内容不被ScrollHeader遮盖,设置contentOffset属性即可 我这里用的ScrollHeader是作为独立的控件使用,与UITableView的HeaderView并无关系...topView 即为压缩后的布局 bottomView 即为展开后的布局 我这里采取将topView固定在ScrollHeader的顶部,覆盖在bottomView上方,根据滑动对其淡入淡出。...; 这个属性的作用就是获得UITableView对应的scrollView,因为UITableView本身是继承UIScrollView的,所以在初始化ScrollHeader的时候可以这么写: MyScrollHeader

    3.4K20

    关于首页设计框架和一些细节处理分析

    开始觉得很简单,毕竟我也是对于 UITableView和 UICollectionView 很溜的码农。 之前界面框架很简单 ?...整体是一个 UICollectionView 上面是一个 Header 我现在使用原来框架面临的问题是 我的 Header 那么多元素 都超出两屏幕了 自然要滚动了 之前是商品列表和 Header 可以显示在一个屏幕...去他大爷的,就给了几天时间做,我都来来回回做了快三个星期了,找框架就用了很久。 结果还是要自己写框架。 ? 首页用到了 N 个 UICollectionView 你说6不6 ?...1 上面Header为啥用 UITableView?...因为放在 TableView 随着滚动会刷新表格 对象会重新生成 很难和下面的频道页面联动 3 为什么整体不用 UICollectionView 上面是 Header?

    81820

    TableView优化之高度缓存

    ---- 分段解析 为什么选择category而不是subclass 我想很多人都会有疑问,为什么选择category而不是继承,毕竟category不能添加属性,用起来不是很方便。...通过这里我们知道我们OC的语言是怎么实现的了吧,就是通过runtime转化成了C++的代码,然后进行运行。 从这你也应该知道为什么OC中叫发送消息,不叫函数调用了吧。...import ---- HeightCache 为什么说这个类呢?怎么还不进入正题呢?说好的UITableView的category呢?...老司机写在这里是为了调试的时候更直观的看到缓存高度操作时的状态。实际应用中,如无特殊需要,建议将其写在.m中。 .m中,我们先看一下这几个工具方法,这才是核心部分。...然而之所以不爱附上demo链接是因为老司机觉得每次我都已经很详细的在博客中贴出我全部代码而且一句一句讲解真的已经知无不言言无不尽了,我觉得编程这种东西还是得下手敲一遍,看别人的东西看一天也看不懂。

    2.4K30

    iOS-TableView统一数据源代理

    TableView 是 iOS 应用程序中非常通用的组件,几乎每一个界面都有一个TableView,而我们许多的代码都和TableView有关系,比如数据展示、更新TableView,一些响应选择事件等...,而这些大多都会通过其代理函数来实现,所以在VC中我们通常需要实现大量TableView的代理函数,如下面这样 func tableView(_ tableView: UITableView, heightForHeaderInSection...,这里我将dataSource和delegate统一为delegate了,并且如果有多个TableView,我们还可以创建多个代理实例与其一一对应 网络请求:这里是做网络请求地方,并且将请求后的数据保存在代理类中...刷新视图 确定cell的类型:cell是通过它注册identifier来创建的,所以根据indexPath来返回相应的cell注册的identifier即可 头部高度:header的高度,可以是定值,...来动态返回 配置数据源:这里可以获取的已经初始化号的cell和其对应的数据源,我们只需要将其赋值给cell即可 点击事件 上面这些步骤也不是固定的,这里有链式编程的思想,有些属性可以不设置则会取默认值,

    93410

    iOS 列表界面如何优雅实现模块化与动态化

    理论上这些组件的原理大同小异,虽然它们各有优势,但却不太能满足笔者对架构清晰度的要求。 本文分析 YBHandyList 的应用价值,希望能解开一些朋友的疑惑。...业务痛点 iOS 界面开发中 UITableView / UICollectionView 的出场率极高,它们都是使用代理方法配置数据源,虽然这样的设计理念符合了单一职责原则,但在列表变得复杂时代理方法的处理将变得力不从心...: 同一个 Cell / Header / Footer 处理逻辑分散在各个代理方法中,不便于管理。...YBHandyList 的语法糖非常收敛,简单的一个延展,你甚至可以选择不使用语法糖,直接使用代理实现类。 由此,新手工程师也能对实施代码充满信心。...业务侵入性低 YBHandyList 采用 IOP 设计,最大限度的降低了业务侵入性,只需要在 Cell / Header / Footer 中实现几个代理方法就行了。

    1.5K20

    Swift| 基础语法(五)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...、UIButton、UIImageView的使用 UITableView的使用 UITableView的使用 单例 从相册选择照片或者拍照 ---- 一、纯代码创建应用根试图 func application...print("按钮点击了: \(butTitle)") } 三、UITableView的使用 var myTb : UITableView?...可以在自定义cell中处理点击状态下的显示 var label1 :UILabel? var label2 :UILabel?...因为在Swift中,所有对象的构造器默认都是public,所以需要重写你的init让其成为私有的。 这样就保证像如下的代码编译报错,不能通过。 六、从相册选择照片或者拍照 ?

    2K30

    你可能需要为你的 APP 适配 iOS11

    ; ③ 通过约束关联你的子视图; 二、管理margins 和 insets 1、layout margins 基于约束的Auto Layout,使我们搭建能够动态响应内部和外部变化的用户界面。...为任意你想设置的值,包括0,如下图所示: 2、安全区域(Safe Area) 如下图:照片应用程序 从iOS 7以来,我们在整个操作系统中都有这些半透明的bars,苹果鼓励我们通过这些bars绘制内容...: 2、Table Views :在iOS 11中默认启用Self-Sizing 这个应该是UITableView最大的改变。...我写demo测试的时候,因为每个cell的高度都较小,所以只显示image,然后我增加cell的高度后,就可以同时显示image和title了。...【ASO优化】专业团队多维度深度剖析App的ASO现状;围绕App目标用户群筛选高 度关联的关键词;帮助提升App在苹果应用商店中的曝光率。

    2.5K00

    iOS 10.3 Label高度计算问题 (UITableView+FDTemplateLayoutCell)1.前言2.问题发现3.解决问题4.列举下解决问题的方法

    2.问题发现 经过测试发现问题出现在xib或者nib创建的cell 拉约束之后再用UITableView+FDTemplateLayoutCell 计算高度就会出现问题,用Masonry 配合UITableView...因为有时候我发现第一次label显示的是没问题的,但是刷新一下就不行了,所以我想到在刷新重新算高度之前刷新下约束,这样就可以知道label的最大宽度限制了,当然我也不想在所以的cell 里面处理 所以在...1.png 当然如果这个能满足你也是很好的,但是却满足不了我的工程,这个是可以完全解决nib 创建的cell 的高度问题,但是纯代码用Masonry加约束的却出现了问题,反而不能换行了,所以这个方法也不适合我...,此路不通我再想他法继续往下看 3.给cell.contentView 加左右约束 在这里我这样理解的,既然xcode自动帮我们加的左右约束有问题,那我不用他的了, 我自己加 ?...至此这个问题完美的解决了(我的问题是解决了,你的解决了吗?欢迎留言共同探讨,小牛路过,不喜勿喷!) 什么,你还懒得敲,要我发源码!

    1.7K40

    android

    : 1 pod  'Masonry' Masonry学习建议 在UI开发中,纯代码和Interface Builder我都是用过的,在开发过程中也积累了一些经验。...在项目中设置的AutoLayout约束,起到对视图布局的标记作用。设置好约束之后,程序运行过程中创建视图时,会根据设置好的约束计算frame,并渲染到视图上。...所以在纯代码情况下,视图设置的约束是否正确,要以运行之后显示的结果和打印的log为准。 Masonry中的坑 在使用Masonry进行约束时,有一些是需要注意的。...动态Cell高度 在iOS UI开发过程中,UITableView的动态Cell高度一直都是个问题。...实现方式: 需要设置tableView的rowHeight属性,这里设置为自动高度,告诉系统Cell的高度是不固定的,需要系统帮我们进行计算。

    73420

    【IOS开发基础系列】UICollectionView专题

    Views 追加视图 如果你对UITableView比较熟悉的话,可以理解为每个Section的Header或者Footer,用来标记每个section的view     • Decoration Views...1.3 关于重用         为了得到高效的View,对于cell的重用是必须的,避免了不断生成和销毁对象的操作,这与在UITableView中的情况是一致的。...关于详细的自定义UICollectionViewLayout和一些细节,我将写在之后一篇笔记中。         ...Flow Layout简单说是一个直线对齐的layout,最常见的Grid View形式即为一种Flow Layout配置。上面的照片架界面就是一个典型的Flow Layout。     ...需要注意根据滚动方向不同,header和footer的高和宽中只有一个会起作用。垂直滚动时section间宽度为该尺寸的高,而水平滚动时为宽度起作用,如图。

    90530

    【死磕iOS】处理不等高TableViewCell的小花招

    第一步:创建Cell并正确设置约束,使文字区域高度能够根据文字内容多少自动调整 第二步:再给这个Cell添加点别的东东,就叫这个东东BottomCub了。为Cub添加好约束。...第一步:硬生生的将每个Cell的高度算出来,并保存在一个数组中 第二步:heightForRow方法中返回相应的CellHeight #import "CalculatorViewController.h...View设置约束 - 除了要定高、定宽、左上角粘着Label外,还要设置bottom距contentView的bottom间距为固定值,如0 第三步:一定要注意 - 不能实现heightForRow代理方法...- 可以将Cell高度保存在一个数组中,或者保存在Cell对应的Model中~ 但是,我们知道系统对tableView代理方法的调用顺序,是先调取heightForRow再调取cellForRow的呀...实现这个代理方法后,系统会先调取cellForRow,再调取heightForRow,而且实现这个代理方法之后,腰不酸了,腿不疼了,一口气上五楼也不费劲了~ 示例代码:可以参考下我之前的文章哦!

    1.3K80

    你可能需要为你的APP适配iOS11

    ; ③ 通过约束关联你的子视图; 二 管理margins 和 insets layout margins 基于约束的Auto Layout,使我们搭建能够动态响应内部和外部变化的用户界面。...为任意你想设置的值,包括0,如下图所示: 安全区域(Safe Area) 如下图:照片应用程序 从iOS 7以来,我们在整个操作系统中都有这些半透明的bars,苹果鼓励我们通过这些bars绘制内容...: Table Views :        在iOS 11中默认启用Self-Sizing 这个应该是UITableView最大的改变。...我写demo测试的时候,因为每个cell的高度都较小,所以只显示image,然后我增加cell的高度后,就可以同时显示image和title了。...【ASO优化】专业团队多维度深度剖析App的ASO现状;围绕App目标用户群筛选高 度关联的关键词;帮助提升App在苹果应用商店中的曝光率。

    82920

    iOS开发之表视图爱上CoreData

    (上面是笔者自己为了更好的理解CoreData而做的简单类比,如果学过PHP的ThinkPHP框架的小伙伴们也可以和TP中的ORM类比)。   那么TableView为什么会爱上CoreData呢?...sectionDictionary;       3.在sectionDictionary中我们存放着两个键值对 header和items, header中存放的时section中的名字,items中存放的时每个...和AppDelegate.m中进行相应的配置,并且同时还自动生成一个以本应用名命名的Data Model文件,我们可以在Data Model文件中添加我们的数据模型, 添加好的数据模型我们会在生成数据实体类时使用...return sections.count; }   //通过获取section中的信息来获取header和每个secion中有多少数据   -(NSString *)tableView:(UITableView...中,我们就可在图片库中选取相应的照片啦。

    2.2K80
    领券