在iOS7上分组UITableView的标题视图高度

时间:2013-08-04 14:54:20

标签: header uitableview ios7

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

以下是此行为的屏幕截图: enter image description here

你可以看到我的视图中的标题(VIBRATE,SILENT MODE),它的颜色较深,上面有更亮的空间。

6 个答案:

答案 0 :(得分:73)

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

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}

答案 1 :(得分: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];
}

答案 2 :(得分:3)

这与凯西的回复几乎相同,但是它有点清洁,因为它不需要实现委托方法。在设置表视图时,只需将属性sectionFooterHeight设置为0.它使用较少的代码(并且没有DBL_MIN奇数)完成相同的操作。

tableView.sectionFooterHeight = 0.0;

答案 3 :(得分:1)

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

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

自定义其高度。

非常确定还有其他方法可以做到,我不知道。

答案 4 :(得分:0)

似乎Apple做出了有意识的设计决策,使得分组表视图在顶部有额外的空间。尝试调整UITableView的contentInset。见my answer here

答案 5 :(得分:0)

Swift 2.2版本:

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.min
}