18

我正在构建我的设置屏幕并使用分组表视图。尝试设置标题时,我看到标题视图上方的间距。我仔细检查了一下,我确实通过了正确的视图高度-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

这是此行为的屏幕截图: 在此处输入图像描述

您可以看到我的视图,其中包含标题(振动,静音模式),背景颜色较暗,上方空间较亮。

4

6 回答 6

73

经过大量搜索,我终于找到了解决此问题的方法。tableview 的委托需要实现 heightForFooterInSection 并返回一个非常小的数字。返回 0 默认为导致额外空格的相同间距。

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
于 2013-10-04T03:07:42.973 回答
5

试试这个:

- (void)viewWillAppear:(BOOL)animated{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 1;
    UIView *headerView = [[UIView alloc] initWithFrame:frame];
    [self.tableView setTableHeaderView:headerView];
}
于 2013-08-18T12:58:00.063 回答
4

这与 Casey 的响应几乎相同,但是,它更简洁一些,因为它不需要实现委托方法。当您设置表格视图时,只需将属性设置sectionFooterHeight为 0。它可以用更少的代码(并且没有DBL_MIN奇怪)完成同样的事情。

tableView.sectionFooterHeight = 0.0;

于 2014-05-20T22:45:47.343 回答
1

很确定这只是一个简单的黑客攻击。但一个简单的方法是编写这个函数:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
      return 48.0f; // header height
}

自定义其高度。

很确定还有其他方法可以做到这一点,我不知道。

于 2013-08-18T06:22:24.663 回答
0

苹果似乎做出了一个有意识的设计决定,让分组表视图在顶部有额外的空间。尝试调整UITableView. 在这里查看我的答案

于 2013-09-21T17:34:36.697 回答
0

斯威夫特 2.2 版本:

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.min
}
于 2016-09-15T14:27:44.283 回答