我正在使用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)
])
因此,我注意到了滚动指示器的这种奇怪行为:
绿色是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。
谢谢。