一澳淑、源起
今天有個(gè)朋友問我历等,怎么動(dòng)態(tài)給tableView的headerView設(shè)置高度序宦。我看到這個(gè)需求之后拙友,腦海一下子就想起了之前做過的那個(gè)社交電商的項(xiàng)目为狸。當(dāng)時(shí)是從帖子列表點(diǎn)擊進(jìn)入詳情,詳情頁面上部分是該帖子的內(nèi)容:包含是否存在圖片遗契,以及發(fā)布的文字多少辐棒,這里肯定是涉及到了headView的動(dòng)態(tài)高度顯示。我當(dāng)時(shí)好像做了之后牍蜂,還是有或多或少的 高度計(jì)算有點(diǎn)大(比實(shí)際要展示的大漾根。底部流出空白)
文字輸入有點(diǎn)多了,先假裝要放代碼
對(duì)了鲫竞,當(dāng)時(shí)是用的frame 做的headView高度 比如這樣
-(XHListHeaderView *)headerView {
if (!_headerView) {
_headerView =[[XHListHeaderView alloc] initWithFrame:CGRectMake(0,0,kScreenWidth,X) andListType:PageListPrivate];
_headerView.delegete = self;
}
return _headerView;
}
這個(gè)X 可以是0 最終的高度是要經(jīng)過接口數(shù)據(jù)處理 布局之后的高度
下面是網(wǎng)絡(luò)請(qǐng)求辐怕。。
只說success的回調(diào)
重新布局計(jì)算从绘。拿到了高度 frameH...../..
重新給tableView 設(shè)置frame
CGRect newFrame = self.headerView.frame;
newFrame.size.height = frameH
self.headerView.frame = great ......... 這里在設(shè)置下 注意高度
[self.tableView beginUpdates];
[self.tableView setTableHeaderView: viewHeader];
[self.tableView endUpdates];
注意點(diǎn)寄疏。
1.需要注意的是 拿到計(jì)算后的高度之后要執(zhí)行
[self.tableView beginUpdates];
[self.tableView endUpdates];
2.tableView在懶加載的時(shí)候先設(shè)置上headView。僵井。陕截。。
self.tableView.tableHeaderView = self.headerView;
這樣 update效果更好