问题说明:
对于行高(rowHeight),section头尾高度(sectionHeaderHeight \ sectionFooterHeight)固定的table可以在初始化table的时候就设定其值.
初始化后设置table相关属性代码如下:
1 | // 禁用预估高度 |
此时在导航栏底部留有一高度为35pt的空白区域, 如下图:

解决方案:
初始化时给table添加高度为
CGFLOAT_MIN的头部视图(最优)
1 | CGRect rect = CGRectMake(0, 0, 0, CGFLOAT_MIN); |
设置
table的内容内边距contentInset
1 | _table.contentInset = UIEdgeInsetsMake(-35.f, 0, 0, 0); |
实现返回
sectionHeaderHeight的代理函数,并返回CGFLOAT_MIN
1 | tableView:heightForHeaderInSection: -> CGFLOAT_MIN |
原因猜测:UITableViewStyleGrouped 样式的table会默认添加一个高度为35pt的表头视图(tableHeaderView),而sectionHeaderHeight仅对每个Section的头部视图起作用
验证: 在table添加到父视图后打印其 tableHeaderView
结论: tableHeaderView值为nil