1

我添加了两张图片,第一张显示我想要的,第二张显示正在发生的事情。我希望 uitableview 标题位于状态栏后面,如第一张图片所示。部署目标是 9.2

在此处输入图像描述

第二个是

在此处输入图像描述

4

2 回答 2

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

在此处输入图像描述

在这里您可以下载测试项目。

于 2017-04-25T13:46:46.167 回答
0

来自 Xcode 的警告:iOS 11.0 中不推荐使用“topLayoutGuide”:使用 view.safeAreaLayoutGuide.topAnchor 而不是 topLayoutGuide.bottomAnchor

所以现在你可以这样做来达到同样的效果。

tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true

注意我们.topAnchor在这里使用了 safeAreaLayoutGuide。

于 2020-08-13T21:23:02.907 回答