从iOS7开始,在我的UITableView顶部有额外的空间它有一个UITableViewStyleGrouped样式。
这里有一个例子:
tableview从第一个箭头开始,有35个像素的无法解释的填充,然后绿色的头是一个由viewForHeaderInSection返回的UIView(其中section为0)。
有人能解释一下这个35像素的数量是从哪里来的吗?我如何才能在不切换到UITableViewStylePlain的情况下摆脱它?
更新(回答):
在iOS 11及更高版本中:
tableView.contentInsetAdjustmentBehavior = .never
Swift 4代码:
对于没有section header的tableview,你可以添加以下代码:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
你会得到标题间距为0。
如果你想要一个特定高度的头文件,传递该值:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return header_height
}
和viewForHeaderinSection委托的视图。
我检查了所有的答案。没有一个对我有效。我所要做的就是
self.myTableView.rowHeight = UITableViewAutomaticDimension
self.myTableView.estimatedRowHeight = 44.0
此外,这个问题并没有发生在tableView的顶部。它发生在tableView每个部分的顶部。
这个问题只发生在iOS9上。我们的应用在iOS10和iOS 11上运行良好。
我强烈推荐你看看这个很棒的问题和它的顶级答案:
在UITableView中使用自动布局进行动态单元格布局和可变行高
唯一对我有用的是:
迅速:
tableView.sectionHeaderHeight = 0
tableView.sectionFooterHeight = 0
objective - c:
self.tableView.sectionHeaderHeight = 0;
self.tableView.sectionFooterHeight = 0;
另外,我还有多余的空间来写第一部分。这是因为我错误地使用了tableHeaderView属性。修正了,以及添加:
self.tableView.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 0.01))
我有一个VC与容器在它(btw是一个导航控制器的一部分),并嵌入其中是一个TableVC。
选择我的TableVC,查看属性面板:
取消勾选自动调整滚动插入
取消检查顶部栏下的延伸边
然后我设置了容器相对于父视图的自动约束:
容器的观点。top = ParentView。顶边
这为我完成了以下任务:
保持桌面拉到顶部,但就在我的导航栏下面
刷新后,表返回到这个位置,而不是像以前那样在导航栏下向上+
在实际的底部滚动表底部后,不缺它
我用这个设置进行了大量的试验和错误,但我最终发现了lekksi @移除UITableView单元格前的空白空间发布的这些小细节
你可以检测你的应用是否运行iOS7或更高版本,并在你的表视图委托中添加这两个方法(通常在你的UIViewController代码中)
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
这可能不是一个优雅的解决方案,但对我来说是可行的
斯威夫特版本:
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}