没用 Storyboard 的同校利用方面的代码就 OK 了,在率先个 Section 的地方拖进来一个空 UIView 

率先个section下面多余间距处理

// 隐藏UITableViewStyleGrouped上边多余的间隔
_tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];

先是个section上边多余间距处理

// 隐藏UITableViewStyleGrouped上边多余的间隔
_tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];

每个section上面多余间距处理

// 隐藏UITableViewStyleGrouped下边多余的间隔
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
  • 备注:若传入的 height == 0,则 height 被设置成默许值
  • 若 height
    小于显示屏半像素对应的冲天,则不会被渲染,所以那边再次来到CGFLOAT_365体育网投,MIN,其实再次回到0.01也是可以的

每个section上边多余间距处理

// 隐藏UITableViewStyleGrouped下边多余的间隔
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
  • 备注:若传入的 height == 0,则 height 被安装成默许值
  • 若 height
    小于显示屏半像素对应的惊人,则不会被渲染,所以那边重回CGFLOAT_MIN,其实重返0.01也是能够的

补偿:代码顺序的分裂造成第四个section上边出现多余间距

  • 在装置代理设置tableFooterView,上边会出现剩余间距

tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStyleGrouped];
tableView.tableFooterView = [UIView new];
tableView.delegate = self;
tableView.dataSource = self;
  • 在安装代理设置tableFooterView,上边不会出现余下间距

tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStyleGrouped];
tableView.delegate = self;
tableView.dataSource = self;
tableView.tableFooterView = [UIView new];
  • 可以经过第一个section上边多余间距处理的法门来缓解因代码顺序导致的上述难点,所以那里提出要解决第一个section上边多余间距依旧通过小说伊始所说的解决办法更好

补偿:代码顺序的不一样造成第三个section上面出现多余间距

  • 在装置代理设置tableFooterView,上边会出现剩余间距

tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStyleGrouped];
tableView.tableFooterView = [UIView new];
tableView.delegate = self;
tableView.dataSource = self;
  • 在安装代理设置tableFooterView,上边不会出现剩余间距

tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStyleGrouped];
tableView.delegate = self;
tableView.dataSource = self;
tableView.tableFooterView = [UIView new];
  • 可以通过第一个section上边多余间距处理的不二法门来缓解因代码顺序导致的上述难点,所以那边提出要解决第一个section上边多余间距抑或经过小说开首所说的解决办法更好

在 Storyboard 中 0 代码搞定

没用 Storyboard 的同班利用方面的代码就 OK 了; 而在 Storyboard 中可以 0
代码搞定那一个事: 

率先,在率先个 Section 的上面拖进来一个空 UIView 

365体育网投 1

下一场选中那些 UIView 的 Runtime Attributes 栏,添加一个 frame 的
KeyPath 

365体育网投 2

那般尾部的间距就乖乖的不见了: 

365体育网投 3

在 Storyboard 中 0 代码搞定

没用 Storyboard 的同窗利用方面的代码就 OK 了; 而在 Storyboard 中得以 0
代码搞定这么些事: 

率先,在第三个 Section 的地方拖进来一个空 UIView 

365体育网投 4

接下来选中那些 UIView 的 Runtime Attributes 栏,添加一个 frame 的
KeyPath 

365体育网投 5

那样底部的间距就乖乖的散失了: 

365体育网投 6

刨根问底 UITableViewHeader 的猫腻

怎么刚才说 0.1 和 CGFLOAT_MIN
是相同的吗?经过探究,那几个中度值的熏陶大约是这么的:

  1. 若传入的 height == 0,则 height 被装置成默许值
  2. 若 height 小于屏幕半像素对应的中度,那么些 header 不在另一个像素渲染

半像素也就是 1.0 / scale / 2.0,如在 @2x 屏上是 0.25
直观的感触下,假设那些 height 被设置成 0.5 的指南:
365体育网投 7

导航栏上面的阴影线看上去宽了 0.5 像素的,Done。

参考作品

刨根问底 UITableViewHeader 的猫腻

何以刚才说 0.1 和 CGFLOAT_MIN
是均等的啊?经过商讨,那个高度值的影响大约是这么的:

  1. 若传入的 height == 0,则 height 被安装成默许值
  2. 若 height 小于显示屏半像素对应的万丈,那几个 header 不在另一个像素渲染

半像素也就是 1.0 / scale / 2.0,如在 @2x 屏上是 0.25
直观的感想下,假若那一个 height 被装置成 0.5 的样子:
365体育网投 8

导航栏上面的阴影线看上去宽了 0.5 像素的,Done。

参照小说

相关文章