本文主要是介绍iOS 屏幕适配 iPhone X SafeArea安全区域,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
三月份工作 9月份才开始自己主动了解安全区域适配问题
一. 前言
本文的出发点是对iOS设备的适配, 我们之前的适配只是考虑设备的尺寸, 设备的方向, 而在iPhoneX出来之后呢, 我们又多了一种考量, 那就是刘海和底部横条(HomeIndicator), 我们通过UIKit11.0之后新增的API来解决这个问题, 达到不同设备尺寸, 不同设备方向的完美适配.
二. 之前的做法
注: 该方法只适用于设备的竖屏, 如果是横屏就会出现问题
我们是用宏, 来解决这个问题的, 像这样:
/** 设备屏幕宽度 */
#define LCLScreenWidth [[UIScreen mainScreen] bounds].size.width
/** 设备屏幕高度 */
#define LCLScreenHeight [[UIScreen mainScreen] bounds].size.height
/** iPhoneX判断 */
#define LCLIsIphoneX (CGSizeEqualToSize(CGSizeMake(375.f, 812.f), [UIScreen mainScreen].bounds.size) || CGSizeEqualToSize(CGSizeMake(812.f, 375.f), [UIScreen mainScreen].bounds.size))
/** 状态栏高度 */
#define LCL_StatusBar_Height ((LCLIsIphoneX) ? 44 : 20)
/** 导航栏高度 */
#define LCL_NavBar_Height ((LCLIsIphoneX) ? 88 : 64)
/** 标签栏高度 */
#define LCL_TabBar_Height ((LCLIsIphoneX) ? 83 : 49)
/** 底部横条高度 */
#define LCL_HomeIndicator_Height ((LCLIsIphoneX) ? 34 : 0)
但是这不能满足我们的需求, 因为这样做它不支持横屏.
三. 现在的做法
我们需要用到UIKit11.0的新增属性来完成这个需求
UIView类的新属性safeAreaLayoutGuide, 它是UILayoutGuide类型, 我们可以理解为一块安全区域(SafeArea), 不被statusBar, navigation
这篇关于iOS 屏幕适配 iPhone X SafeArea安全区域的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!