首页
学习
活动
专区
工具
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高度有变化,而且点击之后背景颜色和原先不一致 UITableviewheader高度变大,有的地方会出现空白cell格 UITableview...这也就是为什么我们返回键位置会右移原因了。   ...UITableviewheader高度变大,有的地方会出现空白cell格   iOS 11UITableview改变也是蛮大,原本automaticallyAdjustsScrollViewInsets...并且在iOS 11如果没有重写header、footerheight和view函数,iOS 11系统不会像之前那样自动调用。...UITableview出现位置不对   和问题4问题一样,都是UITableview问题,主要原因还是iOS 11automaticallyAdjustsScrollViewInsets过期了

1.5K60

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

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

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

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

    2K20

    iOS开发过程奇淫技巧记录

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

    59820

    列表滑动展开隐藏头部HeaderView

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

    3.4K20

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

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

    81520

    TableView优化之高度缓存

    ---- 分段解析 为什么选择category而不是subclass 想很多人都会有疑问,为什么选择category而不是继承,毕竟category不能添加属性,用起来不是很方便。...通过这里我们知道我们OC语言是怎么实现了吧,就是通过runtime转化成了C++代码,然后进行运行。 从这你也应该知道为什么OC叫发送消息,不叫函数调用了吧。...import ---- HeightCache 为什么说这个类呢?怎么还不进入正题呢?说好UITableViewcategory呢?...老司机写在这里是为了调试时候更直观看到缓存高度操作时状态。实际应用,如无特殊需要,建议将其写在.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即可 点击事件 上面这些步骤也不是固定,这里有链式编程思想,有些属性可以设置则会取默认值,

    92110

    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优化】专业团队多维度深度剖析AppASO现状;围绕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高度一直都是个问题。...实现方式: 需要设置tableViewrowHeight属性,这里设置为自动高度,告诉系统Cell高度是固定,需要系统帮我们进行计算。

    73020

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

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

    1.3K80

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

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

    72330

    你可能需要为你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优化】专业团队多维度深度剖析AppASO现状;围绕App目标用户群筛选高 度关联关键词;帮助提升App在苹果应用商店曝光率。

    82120

    【iOS开发】在 App 中加入 AdMob 广告 - 入门介绍与编程技巧

    就目前来看,果还是不太擅长移动App广告这一块,所以推荐大家用iAd(好像现在还是不支持中国大陆?听说前一阵子Apple解散了有一百来人iAd部门?)...,可以上传身份证照片就是这样),然后Google会以极速(当时是几个小时)通过这个请求。...如果你 UITableView 是存在于 UITableViewController ,那么 UITableView frame 是不可调节,所以通过上面的代码,我们可以方便地避免广告遮挡原有的内容...而即便你 UITableView 是存在于 UIViewController ,即这个 UITableView 是你自己添加进来,你可以任意调节 frame,依然建议你用上面这种方法,而不是直接把...,就不在这篇文章写了,如果看着费劲的话,欢迎在下面评论,也可以再写一篇关于定时器文章。

    4.3K30
    领券