tableHeaderView自适应高度

autolayout为例:(autosizing道理一样)

场景一:创建HeaderView

创建HeaderView的时候需要指定它的高度。
但是autolayout中,HeaderView的高度往往会根据子控件浮动。而由于HeaderView还没加到TableView上,所以,HeaderView自身又无法加约束。
此时,我们需要把子控件的约束设置好,包括子控件对HeaderView的约束足以把HeaderView撑起来。
接下来使用以下代码,便可自动计算并设置HeaderView了。

CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    
CGRect headerFrame = headerView.frame;
headerFrame.size.height = height;
headerView.frame = headerFrame;
self.tableView.tableHeaderView = headerView;

场景二:更新HeaderView

我们给UITableView添加一个HeaderView,之后想要修改Header大小的时候,会发现HeaderView的大小正确变化了。但是界面显示仍然不正确,HeaderView的显示区域没有变化。如图:

修改HeaderView

这时候搜索引擎得知,只修改HeaderView是没有用的,需要重新设置HeaderView。像这样:

CGRect frame = headerView.frame;
frame.size.height = nNeedsHeight;
headerView.frame = frame;
        
tableView.tableHeaderView = headerView;

可是,我们之所以用autolayout,就是因为不想算高度呀。都知道高度了解决方法就太多了。
那么不知道高度的情况下怎么办呢?
其实只需要以下设置就可以了。

[self.tableView.tableHeaderView layoutIfNeeded]; 
self.tableView.tableHeaderView = self.headerView;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,195评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,173评论 25 709
  • 有些时候,我会走到某个陌生的路口,找不到方向,是否随意抉择一个方向也尚可到达终点。还是在此刻走错就真正错过。错过了...
    王将予国阅读 1,586评论 0 1
  • 手抄报:草的芬芳 色彩斑斓 嫩嫩的芽已然破壁 在暖风中摇曳 在成长的路上 你正养精蓄锐 好学不倦 孜孜以求 一刻也...
    牛8蒲哥阅读 1,651评论 0 1
  • 01 认识一个学习很认真,很努力的小女孩小羽。去年初中毕业,以非常优异的成绩,进入本地的一所最好的高中。 当别的孩...
    正好闲聊阅读 3,262评论 0 1