安全使用“安全区域布局指南”

从iOS 11开始,不推荐使用顶部和底部布局指南属性,并且Apple引入了安全区域布局指南。 顶部和底部布局指南是在iOS 7中引入的,其主要目的是引导我们将视图与根视图的顶部或底部对齐,以使我们的视图不会被顶部或底部的条遮挡。

顶部和底部布局指南由在UIView上定义的单个属性“ safeAreaLayoutGuide”代替(与UIViewController的顶部和底部布局指南相比)。

它是UILayoutGuide类的实例,这使得它非常易于使用,尤其是与布局锚点一起使用时。 如果您不熟悉UILayoutGuide,可以在我的文章“ UILayoutGuide终极指南”中找到有关它的详细讨论。 或者,如果您从未使用过NSLayoutAnchors,我也会写一篇有关它的文章。

安全区域布局指南

安全区域布局指南提供了一个不会被遮挡的视图区域,您可以将视图与其对齐以实现最大的可视性。 该区域根据顶部和底部条的可用性进行调整。 它是UILayoutGuide的实例,提供了一些属性来绑定视图。 这是有关UILayoutGuide的详尽指南。

与仅在视图控制器中可用的顶部和底部布局指南不同,安全区域布局指南在独立视图中也可用。

使用安全区域布局指南添加约束

在Xcode中:

您可以将视图与安全区域布局指南绑定,就像之前将其与顶部或底部布局指南绑定一样。

以编程方式:

添加安全区域布局指南非常容易。

启用/禁用安全区域布局指南

默认情况下,主故事板的安全区域布局指南已启用。 如果要在Xcode 9中创建新的xib或情节提要,则已经启用了安全区域布局指南选项。 通过进入Interface Builder的文件检查器菜单,然后取消选中“使用安全区域布局指南”选项,可以显式禁用此选项。

在文件检查器菜单中禁用“使用安全区域布局指南”,会将安全区域布局指南附带的约束替换为顶部和底部布局指南,或者如果是视图,则将约束替换为视图的顶部和底部约束。

更改安全区域

您可以重写UIViewController的AdditionalSafeAreaInsets属性来指定自己的安全区域。

更改安全区域也会为子视图也产生新的安全区域。 在上图中,灰色子视图的安全区域发生了变化,并使自身与超级视图的安全区域对齐。 绿色和红色矩形分别显示了我们根视图的安全区域和布局边距指南。 蓝色和黄色矩形代表子视图的安全区域和布局边距。

结论

安全区域布局指南利用了UILayoutGuide API的优势。 它易于在IB或以编程方式实现。 因此,该与我们的老朋友顶部和底部布局指南说再见了。