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