一、什么是SafeArea
SafeArea:翻译中文语义即为安全区域,大家应该都不陌生,它是在iOS11引入的一个概念,在iPhoneX 等刘海屏出来之前,开发者如果想在一个ViewController的view上面添加子控件,只需要考虑我们想要添加的子控件距离屏幕上、下的边界。也就是在iOS7当中引入的两个属性:topLayoutGuide和bottomLayoutGuide。如果ViewController是被包裹在NavigationController或者SatusBar是可见的情况下,这两个属性就是分别表示子控件不被导航栏或状态栏挡住的区域。
在Apple发布了iPhoneX之后,针对横竖屏我们发现仅仅依靠上面两个属性是不能满足视图的布局的。在竖屏情况下,我们要针对上边的刘海和底部的Home Indicator做适配。在横屏的情况下我们要考虑左、右边(刘海)和底部(Home Indicator)的适配。苹果为了方便开发者做这方面的适配,特别针对UIView引入了safeAreaLayoutGuide属性。API对它的解释是:The layout guide representing the portion of your view that is unobscured by bars and other content.也就是说它是一个布局指南,这个布局指南使得我们对view的布局不受一些bar或者其他内容的遮挡。我们可以这么理解:所谓的安全区域就是safeAraeLayoutGuide这个虚拟的view所显示的区域,所有子控件只要是在这个虚拟的view之内都可以被完整的显示出来。
二、针对safeAreaLayoutGuide布局
我们考虑一下这个场景:在一个ViewController中的view上,我们想要