动态改变tableHeaderView高度
在tableView的header部分添加collectionView用于展示选中的条目,需要根据选择的多少动态计算header高度,如果直接更改tableHeaderView的frame, 在整行删除最后一个的时候是不会生效的,虽然frame计算是对的, 而把tableHeaderView赋值给一个临时变量,然后修改frame,然后再改回来就不会出现这种bug
#define kListHeaderTopSpace 22 //collectionVIew顶部空间
- (void)calculateHeader{
//将此方法用block传递给自定义的UICollectionView的子类, 在layoutSubViews中执行比较直接
// 因为collectionView reload的时候肯定会去执行layoutSubViews方法
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重新赋值会刷新比较突然,
//而调用updates方法之后会有刷新的动画效果
[self.tableView beginUpdates];
self.tableView.tableHeaderView = view;
[self.tableView endUpdates];
}
}