在率先个 Section 365体育网投的上边拖进来一个空 UIView 

先是个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_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上边多余间距依旧通过文章先导所说的化解办法更加好

在 Storyboard 中 0 代码化解

没用 Storyboard 的同桌利用方面包车型大巴代码就 OK 了; 而在 Storyboard 中得以 0
代码消除这些事: 

首先,在第多少个 Section 的方面拖进来三个空 UIView 

365体育网投 1

然后选中这么些 UIView 的 Runtime Attributes 栏,加多一个 frame 的
KeyPath 

365体育网投 2

如此底部的间距就乖乖的散失了: 

365体育网投 3

刨根究底 UITableViewHeader 的猫腻

干什么刚才说 0.1 和 CGFLOAT_MIN
是如出生机勃勃辙的吧?经过探究,那个高度值的震慑大约是那般的:

  1. 若传入的 height == 0,则 height 被设置成私下认可值
  2. 若 height 小于显示屏半像素对应的万丈,那么些 header 不在另一个像素渲染

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

导航栏上边包车型大巴阴影线看上去宽了 0.5 像素的,Done。

参照文章

相关文章