【发布时间】:2021-02-02 23:17:27
【问题描述】:
我创建了一个简单的 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,constant: -25),
viewW.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor),
])
附上截图:
安全区域:
没有安全区:
【问题讨论】:
-
那么,如果你不想要其中任何一个,你想要什么样的布局做?
-
@Sweeper
without SafeArea但它会削减视图红色圆圈。我该如何解决? -
红圈视图有什么限制?
-
@Sweeper 我添加了约束截图。
-
你好!实际上,底部的空间是为与 iOS 相关的导航手势保留的,不建议您在其中包含视图/布局。这正是引入“安全区”概念的原因。为什么它可以在其他设备上正常工作?因为导航内容基于主页按钮而不依赖于任何屏幕空间,因此从技术上讲,这些设备上不存在“安全区域”的概念
标签: ios swift constraints nslayoutconstraint safearealayoutguide