这几天开发的时候,有个需要动态改变tableViewHeader的界面,当时是直接在viewDidLoad里面设置了一下tableViewHeader=viewHeader;(现假设viewHeader是tableView的头部视图)
然后在从服务器拿到数据以后,动态设置了viewHeader的高度,发现竟然没有效果...
那么我们简单分析一下:
viewHeader 作为 tableView 的 tableHeaderView,单纯的改变 viewHeader 的 frame 是无济于事的,tableView 不会大度到时刻适应它的高度(以后 Apple 会不会改变就不知道了),所以,如何告诉tableView 它的 tableHeaderView 已经改变了?很简单,就一句话(关键最后一句):
[webView sizeToFit];
CGRect newFrame = viewHeader.frame;
newFrame.size.height = newFrame.size.height + webView.frame.size.height;
viewHeader.frame = newFrame;
[self.tableView setTableHeaderView: viewHeader];
这样以后,效果就出来了。不过这种过度显得有些生硬,能不能加一点点动画,让它变得顺眼一些呢?试试下面的代码:
[self.tableView beginUpdates];
[self.tableView setTableHeaderView: viewHeader];
[self.tableView endUpdates];