分组UITableView底部有20px的额外填充

Vla*_*kiy 49 objective-c uitableview ios

在iOS 6中,分组表视图似乎在底部有额外的填充(iOS 5没有它),但我找不到任何表明这是正确/预期行为的文档.

这也会影响示例项目,例如示例中的SimpleTableView项目TableViewSuite.我想我必须将样式AppDelegate改为'分组',并将SDK更新到iOS 6,但没有对该项目进行其他更改.

调查显示,10px保留了页眉和页脚视图,以及一些20px无法解释的视图.没有实际的页眉或页脚视图(tableHeaderView并且tableFooterView正在nil执行和返回nil,例如viewForFooterInSection什么都不做).我在tableView上找不到任何'20'值,虽然我可能错过了一些东西.

为页脚添加零大小视图不会做任何事情,但添加1px方形视图会导致额外的填充消失.例如:

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0,0,1,1)];
Run Code Online (Sandbox Code Playgroud)

它确实占据了1px高度,所以现在是底部填充11px,但这远不如20那么明显.现在设置sectionFooterHeight为0将仅1px产生底部空间.

我的问题是:什么?我怎样才能完全删除它?这不是任务关键任务,但它非常奇怪,不可取,而且据我所知,它没有记录.

请注意 - 从Apple开发论坛复制过去的问题.但我有完全相同的问题,我也不明白如何解决它.

tou*_*bun 71

@frankWhite'解决方案效果很好,但这里有一个更好的解决方案,可以避免输入0.1,0.001或其他类型,以减少它的模糊性.

// Swift version
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {

    // remove bottom extra 20px space.
    return CGFloat.min
}
Run Code Online (Sandbox Code Playgroud)
// Objective-C version
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {

    // remove bottom extra 20px space.
    return CGFLOAT_MIN;
} 
Run Code Online (Sandbox Code Playgroud)

  • `在swift 3.0及更高版本中返回CGFloat.leastNormalMagnitude` (4认同)
  • 为了使它工作使用这个func原型:`func tableView(_ tableView:UITableView,heightForFooterInSection section:Int) - > CGFloat` (2认同)
  • 我还必须实现`viewForFooterInSection`返回`nil'才能使其在iOS 11+中运行 (2认同)

an0*_*an0 31

您可以使用contentInset补偿20px额外底部边距:

tableView.contentInset = UIEdgeInsetsMake(0, 0, -20, 0);
Run Code Online (Sandbox Code Playgroud)


zip*_*ppo 13

在Swift 3中

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}
Run Code Online (Sandbox Code Playgroud)


fra*_*ite 11

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
   return 0.01;
} 
Run Code Online (Sandbox Code Playgroud)

这对我有用

  • 辉煌!将其设置为0无效.我甚至使用了0.0001.我正在使用Xcode 6.3 for iOS8.3,所以这是在最新版本的Xcode上. (2认同)