如何为 swift 中的新 IPhone 设备设置安全区域布局
How to set Safe Area Layout for new IPhone Devices in swift
我已经创建了一个简单的 view.Xib 文件,如果互联网连接因任何原因中断或断开连接,我的视图将显示在底部。
为此,我以编程方式设置了 NSLayoutConstraint
。
- 如果我使用
SafeAreaLayout
,它会在每个新 iPhone 设备的底部给出 spaces,例如(iPhone XR、11、Pro 或 Pro max)。
- 如果我不使用
SafeAreaLayout
那么底部的视图将无法正确显示。
在具有 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 中的外观:
我已经创建了一个简单的 view.Xib 文件,如果互联网连接因任何原因中断或断开连接,我的视图将显示在底部。
为此,我以编程方式设置了 NSLayoutConstraint
。
- 如果我使用
SafeAreaLayout
,它会在每个新 iPhone 设备的底部给出 spaces,例如(iPhone XR、11、Pro 或 Pro max)。 - 如果我不使用
SafeAreaLayout
那么底部的视图将无法正确显示。
在具有 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 中的外观: