UITableView滚动指示器带有意外的顶部填充

时间:2020-04-17 16:37:54

标签: ios swift xcode uitableview

我正在使用UITableView开发应用程序的一部分。我通过编程添加了这组约束。我不考虑底部安全区域,因为我希望在其上方有内容。

NSLayoutConstraint.activate([
    tableView.topAnchor.constraint(equalTo: customHeader.bottomAnchor),
    tableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
    tableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
    tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])

因此,我注意到了滚动指示器的这种奇怪行为:

enter image description here

绿色是customHeader,蓝色是tableView背景色,橙色是第一个单元格。当我下拉表格视图并到达第一个单元格时,滚动指示器不在零位置,而只是在图形上。实际上tableView.scrollIndicatorInsets.top为零。

因此,例如,我尝试将其设置为-20,并且滚动指示器按预期将其零放在customHeader之后。因此它开始出现在tableView之外。

我尝试设置tableView.scrollIndicatorInsets.top = .leastNonZeroMagnitude,它可以工作。现在指标从零开始。

我研究了这种行为,发现如果将以下约束更改为:

tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)

收件人:

tableView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor)

一切正常,无需手动设置滚动指示器的位置。但是通过这种方式,我失去了在安全区域上拥有表格视图内容的可能性。我以为正在使用的vc可能是automaticallyAdjustScrollViewInsets的问题,但事实并非如此。

对此有何建议?我认为这是一个错误。我正在使用Xcode 11.4和Swift 5.2。

谢谢。

0 个答案:

没有答案