如何迅速为新的iPhone设备设置安全区域布局

问题描述

我创建了一个简单的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

没有SafeArea:

Without SafeArea

红色圆圈的约束:

Red Circle Constraints

解决方法

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

约束“暗”视图:

  • 引领超级观看领先
  • 跟踪到超级观看跟踪
  • 从底部到超级观看底部
  • 没有高度限制

然后,将“圆形”视图添加为darkView的子视图,并进行约束:

  • 追踪到darkView追踪:4分
  • 从上到下查看顶部:4个点
  • 从底部进入根视图安全区域底部:4个点

和标签(也是darkView的子视图)受约束:

  • 从尾随到圆尾随:8分
  • CenterY圈出CenterY

现在...

自动布局将把darkView的底部保持在屏幕底部,而darkView的Top 4点保持在圆形视图顶部。

自动布局将使圆形视图的底部距视图底部4点(没有软主页按钮时)和安全区底部4点(当为主页按钮。

这是结果-黄色虚线是安全区域界限。

在iPhone 8上:

enter image description here

以及在iPhone 11 Pro上:

enter image description here

及其在情节提要中的外观:

enter image description here