最近遇到一个坑:
都知道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;