一、源起
今天有个朋友问我,怎么动态给tableView的headerView设置高度。我看到这个需求之后,脑海一下子就想起了之前做过的那个社交电商的项目。当时是从帖子列表点击进入详情,详情页面上部分是该帖子的内容:包含是否存在图片,以及发布的文字多少,这里肯定是涉及到了headView的动态高度显示。我当时好像做了之后,还是有或多或少的 高度计算有点大(比实际要展示的大。底部流出空白)
文字输入有点多了,先假装要放代码
对了,当时是用的frame 做的headView高度 比如这样
-(XHListHeaderView *)headerView {
if (!_headerView) {
_headerView =[[XHListHeaderView alloc] initWithFrame:CGRectMake(0,0,kScreenWidth,X) andListType:PageListPrivate];
_headerView.delegete = self;
}
return _headerView;
}
这个X 可以是0 最终的高度是要经过接口数据处理 布局之后的高度
下面是网络请求。。
只说success的回调
重新布局计算。拿到了高度 frameH...../..
重新给tableView 设置frame
CGRect newFrame = self.headerView.frame;
newFrame.size.height = frameH
self.headerView.frame = great ......... 这里在设置下 注意高度
[self.tableView beginUpdates];
[self.tableView setTableHeaderView: viewHeader];
[self.tableView endUpdates];
注意点。
1.需要注意的是 拿到计算后的高度之后要执行
[self.tableView beginUpdates];
[self.tableView endUpdates];
2.tableView在懒加载的时候先设置上headView。。。。
self.tableView.tableHeaderView = self.headerView;
这样 update效果更好