tableHeaderView在iOS8,9上更新frame不生效问题

最近遇到一个坑:
都知道tableview可以设置header,当我给tableview设置完一个header之后,由于header的高度是由数据决定的,所以我在初始化header的时候并没有给他高度,而是当获取到数据之后重新设置tableHeaderView的frame,但是我后面更新header的frame并没有生效,简要代码如下:

初始化header:

UIView *header = [[UIView alloc] init];
header.backgroundColor = [UIColor clearColor];
_tableView.tableHeaderView = header;

获取到数据之后,更新header的frame:

UIView *tableHeader = self.tableView.tableHeaderView;
tableHeader.frame = CGRectMake(0, 0, self.view.bounds.size.width, CGRectGetMaxY(_hotFuncHeader.frame));
self.tableView.tableHeaderView = tableHeader;

以上代码写法在ios10及以上的机器上是没有问题的,但是到了ios8,9(由于没有机器验证,猜测应该低于ios10的都有问题)上就有问题了,后面更新的frame并没有生效。

我尝试再后面更新frame的时候,又把该header重新设置给tableview一下,问题得到了解决,代码如下:

UIView *tableHeader = self.tableView.tableHeaderView;
tableHeader.frame = CGRectMake(0, 0, self.view.bounds.size.width, CGRectGetMaxY(_hotFuncHeader.frame));
self.tableView.tableHeaderView = tableHeader;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,138评论 1 32
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,490评论 0 12
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,373评论 0 1
  • iOS XIB使用Safe Area后在iOS9和10上面出现的问题和解决方案 1.多添加一个距离SuperVie...
    下雨之後阅读 877评论 0 1
  • #pragma mark someValueAboutTableView 1.tableView的样式:UITab...
    潇岩阅读 956评论 0 0