動(dòng)態(tài)改變tableHeaderView高度
在tableView的header部分添加collectionView用于展示選中的條目,需要根據(jù)選擇的多少動(dòng)態(tài)計(jì)算header高度,如果直接更改tableHeaderView的frame, 在整行刪除最后一個(gè)的時(shí)候是不會(huì)生效的,雖然frame計(jì)算是對(duì)的, 而把tableHeaderView賦值給一個(gè)臨時(shí)變量,然后修改frame,然后再改回來就不會(huì)出現(xiàn)這種bug
56730F65-1E8A-4172-9CDE-1B55150A0B6C.png
#define kListHeaderTopSpace 22 //collectionVIew頂部空間
- (void)calculateHeader{
//將此方法用block傳遞給自定義的UICollectionView的子類, 在layoutSubViews中執(zhí)行比較直接
// 因?yàn)閏ollectionView reload的時(shí)候肯定會(huì)去執(zhí)行l(wèi)ayoutSubViews方法
CGFloat collectionViewH = self.listHeader.collectionView.contentSize.height;
if (self.tableView.tableHeaderView.frame.size.height != collectionViewH +kListHeaderTopSpace) {
CGRect frame = CGRectMake(0, 0, SCREEN_WIDTH, collectionViewH + kListHeaderTopSpace);
UIView *view=self.tableView.tableHeaderView;
view.frame = frame;
//直接給tableHeaderView重新賦值會(huì)刷新比較突然,
//而調(diào)用updates方法之后會(huì)有刷新的動(dòng)畫效果
[self.tableView beginUpdates];
self.tableView.tableHeaderView = view;
[self.tableView endUpdates];
}
}