我正在构建设置屏幕并使用分组表格视图。
在尝试设置标题时,我看到标题视图上方的间距。
我仔细检查过,并在-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
中传递了正确的视图高度。
以下是此行为的屏幕截图:
你可以看到我的视图中的标题(VIBRATE,SILENT MODE),它的颜色较深,上面有更亮的空间。
答案 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
}