我怎样才能将 uitableview header 放在状态栏后面?

how can i take uitableview header behind status bar?

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

第二个是

我假设您使用的是 Autolayout,因此您可以将 table 视图的 .top 边距限制到其超级视图的 .top 或视图控制器的 topLayoutGuide 属性 这样 table 视图将从 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
  )
)

这是它在我的模拟器中的样子:

要让 table header 在状态栏下方开始,只需使用 layoutGuide.bottom 属性 而不是 .top :

在这里你可以download测试项目。

来自 Xcode 的警告:'topLayoutGuide' 在 iOS 11.0 中已弃用:使用 view.safeAreaLayoutGuide.topAnchor 而不是 topLayoutGuide.bottomAnchor

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

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

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