今天在用 UITableView 的时候,遇到一个比较奇怪的问题,就是使用 section 的时候,高度怪怪的,如下图:
核心代码如下:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 20;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return self.sectionArray[section];
}
看了阳神的0代码隐藏GroupedTableView上边多余的间隔之后,如下改变,添加 footerView
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return CGFLOAT_MIN;
}
然而并没有彻底解决我的问题,但也提醒了我在UITableView类型为grouped时,tableView是会默认设置header高度 的,我们不能直接把 heightForHeaderInSection 修改为一个很小的值 (小余 22.0),默认的情况下, heightForHeaderInSection 和 heightForFooterInSection 都是22.0。
因为如上述这样做了之后,样式还是怪怪的,如需改变则需要实现
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
这样搭配着就能完成自己所需要的样式。
这个问题只有在使用 UITableViewStyle.Grouped 来创建 UITableView 的时候才会出现,而默认的样式中随意指定 Section Header 高度都是可以的。
typedef NS_ENUM(NSInteger, UITableViewStyle) {
UITableViewStylePlain, // regular table view
UITableViewStyleGrouped // preferences style table view
};
PS : tableHeaderView 是会随着tableview的滚动而滚动的。如果要实现我们说的固定表头,就用tableHeaderView中自定义的view在tableview的代理方法
viewForHeaderInSection:
啦。