如何为 swift 中的新 IPhone 设备设置安全区域布局

How to set Safe Area Layout for new IPhone Devices in swift

我已经创建了一个简单的 view.Xib 文件,如果互联网连接因任何原因中断或断开连接,我的视图将显示在底部。

为此,我以编程方式设置了 NSLayoutConstraint

在具有 SafeAreaLayout 的所有其他设备(iPhone 7、8 或 plus)中它可以正常工作。

没有space如何在底部正确设置视图?

我的代码:

let viewW = offlineView.fromNib()
view.addSubview(viewW)
viewW.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([

viewW.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
viewW.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
viewW.topAnchor.constraint(equalTo: self.view.bottomAnchor,constant: -25),
viewW.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
])

let viewW = offlineView.fromNib()
view.addSubview(viewW)
viewW.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([

viewW.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor),
viewW.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor),
viewW.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor,constant: -25),
viewW.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),
])

附上截图:

安全区域:

没有安全区域:

红圈的约束:

您可能想尝试这种方法...

约束“暗”视图:

  • 领先superview领先
  • 尾随 superview尾随
  • 底部到superview底部
  • 无身高限制

然后,添加你的“circle”视图作为darkView的子视图,并约束:

  • 尾随到 darkView 尾随:4 分
  • 顶部到暗视图顶部:4 分
  • 底部到 root-view safe-area 底部:4 分

和标签,也是darkView的子视图,约束:

  • 拖尾到圆圈尾随:8 点
  • CenterY 到圆 CenterY

现在...

Auto-layout 将使 darkView 的 Bottom 保持在屏幕底部,darkView 的 Top 4-pts 从圆形视图的顶部开始。

Auto-layout 将保持圆形视图的底部距视图底部 4 磅(当没有 soft-home-button 时)和距底部 4 磅 safe-area(当一个soft-home-button).

这是结果 -- 黄色虚线是 Safe-Area 边界。

于 iPhone 8:

以及 iPhone 11 Pro:

以及它在 Storyboard 中的外观: