iOS开发--利用Safe Area 适配iPhone X

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发--利用Safe Area 适配iPhone X相关的知识,希望对你有一定的参考价值。

最近做iPhone X的适配,发现了一些规律,总体来说适配还是很简单的

iPhone X 顶部的状态栏,也就是安全区距离顶部的高度为 44px;其他的iPhone都为 20px,

iPhone X安全区距离底部的高度为34px

在xcode9中增加了Safe Area

先来了解下

safeAreaLayoutGuide

首先我们看看什么是safeAreaLayoutGuide

技术分享图片
 

看起来复杂,其实很简单,我归纳一下有几点:

  1. 它是UIView的一个只读属性,意味着所有UIView对象都有并且是系统帮我们创建好的
  2. 它继承UILayoutGuide,有layoutFrame意味着它能代表一块区域
  3. 它代表的区域避开了诸如导航栏、tabbar或者其他有可能挡住你这个UIView对象显示的所有父view,意味着你的view对象只要相对另一个view的safeLayoutGuide做布局就不用担心她被奇奇怪怪的东西挡住
  4. 对于控制器的view的safeAreaLayoutGuide,他的区域同样避开了statusbar或其他有可能挡住view显示的东西,我们甚至可以用控制器的additionalSafeAreaInsets属性,来额外指定inset
  5. 如果view完全在父view的安全区域内,或者view不在视图层级或屏幕上,那么view的safeAreaLayoutGuide区域其实和view自身是一样大的

safeAreaLayoutGuide是一个相对抽象的概念,为了便于理解,我们可以把safeAreaLayoutGuide看成是一个“view”,这个“view”系统自动帮我们调整它的bounds,让它不会被各种奇奇怪怪的东西挡住,包括iPhone X的刘海区域和底部的一道杠区域,可以认为在这个“view”上一定能完整显示所有内容。

以下绿色部分就是当前控制器view的safeAreaLayoutGuide区域
技术分享图片
iphone X竖屏safeAreaLayoutGuide的bounds

 

技术分享图片
iPhone X横屏safeAreaLayoutGuide的bounds


 

以上是关于iOS开发--利用Safe Area 适配iPhone X的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发-LayoutGuide(从top/bottom LayoutGuide到Safe Area)

安全区域适配的几种解决方法

关于 iphone刘海屏适配

安全区域适配的几种解决方法

Safe Area Layout Guide before iOS 9.0

Xcode 9.0 报错,Safe Area Layout Guide Before IOS 9.0