用于headerView的UITableView contentOffset未对齐

时间:2018-02-18 11:27:09

标签: ios swift uitableview

我的tableView中的headerView应该一直到设备的顶部。在iPhone X上也是这样,所以缺口越过它。

然后当我滚动我的tableView时,我使用scrollViewDidScroll(scrollView: UIScrollView)来更改headerView的高度以添加scrollView.contentOffset.y,这样就可以了。

一旦滚动,它就会起作用但不是最初的。

所以它看起来像这样:

enter image description here

这就在X

iPhone X

如何摆脱白色区域,以便灰色区域在加载时位于其下方?

我尝试了几个地方,但似乎tableView仍然没有contentOffsets ......我想我在这里缺少一些基本的“应该做什么”...

更新:ViewHierarchy,蓝色是tablewView,但是那时我得到了这个距离......

enter image description here

2 个答案:

答案 0 :(得分:1)

好的,我找到了。因此,它与iPhone X引入的安全区域的变化有关。

有两种可能性,它实际上取决于故事板设置:

如果你使用的是故事板,你的基础是一个放在其中的tableView的UIViewController:

然后修复自动布局就是答案:

当启用安全区域时,单击最顶层视图并创建顶部约束相对于superView的常量为0.默认情况下,它希望保护安全区域,使其相对于安全区域设置。

如果您使用的是UITableViewController模板(例如拖出导航控制器时的默认设置 - tableview组合(我的情况))

这里没有可以设置的约束。因此它对我不起作用(见上文)。 要修复它,请单击根tableView,选择大小检查器,然后将“content insets”设置为“never”。

或以编程方式在viewDidLoad中:

self.tableView.contentInsetAdjustmentBehavior = .never

答案 1 :(得分:0)

你是否在故事板中制作了你的桌面视图?

在viewDidLoad中尝试锚定你的tableview:

tableview.topAnchor.constraint(equalTo: view.topAnchor).isActive = true