我添加了两张图片,第一张显示我想要的,第二张显示正在发生的事情。我希望 uitableview 标题位于状态栏后面,如第一张图片所示。部署目标是 9.2
第二个是
我假设您正在使用Autolayout
,因此您可以将 tableView 的.top
边距限制为其超级视图.top
或视图控制器的topLayoutGuide
属性,以便表视图将从以下位置开始0
:
let toItem: Any = self.topLayoutGuide
// You can change this to `self.view` to have the same effect.
view.addConstraint(
NSLayoutConstraint(item: tableView,
attribute: NSLayoutAttribute.top,
relatedBy: NSLayoutRelation.equal,
toItem: toItem,
attribute: NSLayoutAttribute.top,
multiplier: 1.0, constant: 0
)
)
这是它在我的模拟器中的外观:
要让表头在状态栏下方开始,只需使用layoutGuide
'.bottom
属性而不是.top
:
在这里您可以下载测试项目。
来自 Xcode 的警告:iOS 11.0 中不推荐使用“topLayoutGuide”:使用 view.safeAreaLayoutGuide.topAnchor 而不是 topLayoutGuide.bottomAnchor
所以现在你可以这样做来达到同样的效果。
tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
注意我们.topAnchor
在这里使用了 safeAreaLayoutGuide。