从iOS7开始,在我的UITableView顶部有额外的空间它有一个UITableViewStyleGrouped样式。

这里有一个例子:

tableview从第一个箭头开始,有35个像素的无法解释的填充,然后绿色的头是一个由viewForHeaderInSection返回的UIView(其中section为0)。

有人能解释一下这个35像素的数量是从哪里来的吗?我如何才能在不切换到UITableViewStylePlain的情况下摆脱它?


更新(回答):

在iOS 11及更高版本中:

tableView.contentInsetAdjustmentBehavior = .never

当前回答

当你需要隐藏你的tableHeaderView时,你应该使用这段Swift 3代码:

tableView.tableHeaderView = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 0.0, height: CGFloat.leastNormalMagnitude)))

其他回答

这些答案或变通办法都帮不了我。大多数都在处理tableView本身。引起问题的是我添加tableView或collectionView到的视图。这就是我解决问题的方法:

斯威夫特5

edgesForExtendedLayout = []

我把它放到viewDidLoad中,烦人的间隙消失了。希望这能有所帮助。

我的回答将是更一般的答案,但也可以应用在这个问题上。

如果根视图(ViewController的)或根视图的第一个子视图(子视图)是UIScrollView(或UIScrollView本身)的子类,并且如果

self.navigationController.navigationBar.translucent = YES;

框架将自动设置预先计算的contentInset。


为了避免这种情况,你可以这样做

self.automaticallyAdjustsScrollViewInsets = NO;

但在我的情况下,我不能这样做,因为我正在实现SDK,其中有UIView组件,可以由其他开发人员使用。那个UIView组件包含UIWebView(它有UIScrollView作为第一个子视图)。如果该组件被添加为UIViewController的视图层次结构中的第一个子组件,自动嵌入将被系统应用。

在添加UIWebView之前,我已经通过添加frame(0,0,0,0)来修复这个问题。

在这种情况下,系统没有找到UIScrollView的子类作为第一个子视图,并没有应用insets

我得到了以下的帮助:

YouStoryboard。>属性检查>取消勾选-调整滚动视图嵌入。

我曾经遇到过一个额外的顶部空间的问题,我必须把一堆答案串起来才能得到解决方案。(5小时检查所有答案)

首先,如果你关心

表格视图模式为“分组”,请将其更改为“普通”

不需要对页眉或页脚部分做任何更改,也不需要添加与它们相关的额外委托方法

然后在InterfaceBuilder中有TableView的ViewController中 —取消勾选“调整滚动视图插入” -取消检查扩展边缘:在顶部条下

*此外,确保你删除了衍生数据,并在模拟器或手机中重新安装应用程序,以有效地反映所做的更改。

UI更改有时不反映,因为IDE也…

取消勾选“调整滚动视图嵌入”