在首个 Section 的方面拖进来叁个空 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 

威尼斯人官网 1

接下来选中这些 UIView 的 Runtime Attributes 栏,增加三个 frame 的
KeyPath 

威尼斯人官网 2

这么尾部的间隔就乖乖的错失了: 

威尼斯人官网 3

刨根究底 UITableViewHeader 的猫腻

为啥刚才说 0.1 和 CGFLOAT_MIN
是相同的啊?经过探讨,那几个中度值的熏陶大概是那样的:

  1. 若传入的 height == 0,则 height 被设置成默许值
  2. 若 height 小于显示器半像素对应的冲天,那么些 header 不在另多少个像素渲染

半像素也便是 1.0 / scale / 2.0,如在 @2x 屏上是 0.25
威尼斯人官网,直观的感触下,假如这几个 height 棉被服装置成 0.5 的范例:
威尼斯人官网 4

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

参谋小说

相关文章