tableView大家再熟悉不过,偶尔我们需要cell之间有间隔,实现的方式也很多,一般我会采用UITableViewStyleGrouped,然后设置其Header,或者Footer来实现,不过昨天我开发的时候却发现了个问题,cell之间产生间隔我只需要单独设置每个cell的Header高度,并且设置Header的颜色用于分隔cell即可,于是我写下了以下代码:
//section头部间距
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 26;//section头部高度
}
//section头部视图
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view=[[UIView alloc] init];
view.backgroundColor = [UIColor whiteColor];
return view ;
}
然而我发现,每个Header距离上一个cell还是有一段距离,我想应该是UITableViewStyleGrouped选择下系统默认了cell的Footer高度,于是乎我又加了一段代码让Footer的高度为0.01,代码如下:
//section尾部间距
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.01f;
}
奇怪的是之前都是使用这种方式实现但是在iOS11上面却出现了不同的效果,每个cell下面有了一个高度为0.01的Footer(肉眼看不出,使用Xcode的视图工具可以发现)而下一个cell的Header距离上一个cell还是有一段距离,查了一下新特性之后我才发现,必须要同时设置Footer的高度以及viewForFooterInSection才能消除系统默认设置的间隔,代码如下:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.01f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] init];
}
这两个方法同时设置才可以消除Cell的间隔,实现我们想要的效果
网友评论