问题描述
我创建了一个简单的view.Xib文件,如果由于任何原因互联网连接中断或断开连接,我的视图将显示在底部。
为此,我以编程方式设置了NSLayoutConstraint
。
- 如果我使用
SafeAreaLayout
,它将在每个新的iPhone设备(如iPhone XR,11,Pro或Pro max)的底部提供空格。 - 如果我不使用
SafeAreaLayout
,则底部视图无法正确显示。
在带有SafeAreaLayout
的所有其他设备(iPhone 7、8或更高版本)中,它可以正常工作。
我的代码:
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,viewW.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),])
附带的屏幕截图:
SafeArea:
没有SafeArea:
解决方法
您可能想尝试这种方法...
约束“暗”视图:
- 引领超级观看领先
- 跟踪到超级观看跟踪
- 从底部到超级观看底部
- 没有高度限制
然后,将“圆形”视图添加为darkView的子视图,并进行约束:
- 追踪到darkView追踪:4分
- 从上到下查看顶部:4个点
- 从底部进入根视图安全区域底部:4个点
和标签(也是darkView的子视图)受约束:
- 从尾随到圆尾随:8分
- CenterY圈出CenterY
现在...
自动布局将把darkView的底部保持在屏幕底部,而darkView的Top 4点保持在圆形视图顶部。
自动布局将使圆形视图的底部距视图底部4点(没有软主页按钮时)和安全区底部4点(当为主页按钮。
这是结果-黄色虚线是安全区域界限。
在iPhone 8上:
以及在iPhone 11 Pro上:
及其在情节提要中的外观: