UIView 内的 UITableView 上面的空白 space

Empty white space above UITableView inside a UIView

我试图在我的 ViewController 视图中放置一个 TableView,但在导航栏底部和 table 顶部之间留下了 44 高度的差距。然后我想在该间隙内放置一个 UITextField 作为固定 header。出于某种原因,TableView 在 "Prototype Cells" 的开头上方有一个空的白色 space。它只是白色 space。这是情节提要中的样子。

查看应用程序显示时,它是这样的:

滚动 table 时,它会一直滚动到正确的位置:

尝试查看参与者 ViewController 的 'attribute inspector'(在右侧菜单中)。 检查选项 'Extend Edges' 并取消选中 'Under Top Bars',然后重新定位您的表格视图。

另一种可能的解决方案是取消选中 'Adjust Scroll View Insets' 选项。 原因是当 viewController 扩展其边缘时,比方说在顶栏下方,tableView 的 scrollView 会自动调整其 inset top,以便 tableView 的内容将从顶栏下方开始。但在您的情况下,这不是必需的,因为您的 tableView 本身是从栏下开始的。

关注 ViewController 并进入“属性检查器”选项卡:

您应该不需要更改“延伸边”的默认设置。

看起来真正的问题是故事板中的空白 table header 视图。它显示在您提供的故事板屏幕截图中,位于“输入名称”视图下方和“原型单元格”视图上方。删除它。

只需在您的 ViewDidLoad 方法中添加此内容

self.automaticallyAdjustsScrollViewInsets = NO;

试试这个:

self.tableView.contentInset = UIEdgeInsetsMake(-65, 0, 0, 0)

I just found a solution for this. In my case, i was using TabBarViewController, A just uncheck the option 'Adjust Scroll View Insets'. Issues goes away.

https://i.stack.imgur.com/qgQI8.png

对于 Objective-C 人,将其添加到您的 ViewDidLoad 方法中。

[self.tableView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)];

我的问题是,我将 tableHeaderView 设置为新的 UIView,就像这样

self.tableHeaderView = UIView(frame: .zero)

去掉这一行,问题就解决了。试试这个:

//self.tableHeaderView = UIView(frame: .zero)

将您的 table 视图样式从分组更改为普通