我正在构建我的设置屏幕并使用分组表视图。尝试设置标题时,我看到标题视图上方的间距。我仔细检查了一下,我确实通过了正确的视图高度-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
。
这是此行为的屏幕截图:
您可以看到我的视图,其中包含标题(振动,静音模式),背景颜色较暗,上方空间较亮。
我正在构建我的设置屏幕并使用分组表视图。尝试设置标题时,我看到标题视图上方的间距。我仔细检查了一下,我确实通过了正确的视图高度-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
。
这是此行为的屏幕截图:
您可以看到我的视图,其中包含标题(振动,静音模式),背景颜色较暗,上方空间较亮。
经过大量搜索,我终于找到了解决此问题的方法。tableview 的委托需要实现 heightForFooterInSection 并返回一个非常小的数字。返回 0 默认为导致额外空格的相同间距。
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
试试这个:
- (void)viewWillAppear:(BOOL)animated{
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 1;
UIView *headerView = [[UIView alloc] initWithFrame:frame];
[self.tableView setTableHeaderView:headerView];
}
这与 Casey 的响应几乎相同,但是,它更简洁一些,因为它不需要实现委托方法。当您设置表格视图时,只需将属性设置sectionFooterHeight
为 0。它可以用更少的代码(并且没有DBL_MIN
奇怪)完成同样的事情。
tableView.sectionFooterHeight = 0.0;
很确定这只是一个简单的黑客攻击。但一个简单的方法是编写这个函数:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 48.0f; // header height
}
自定义其高度。
很确定还有其他方法可以做到这一点,我不知道。
苹果似乎做出了一个有意识的设计决定,让分组表视图在顶部有额外的空间。尝试调整UITableView
. 在这里查看我的答案
斯威夫特 2.2 版本:
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.min
}