开篇废话
iPhone X 2017年10 月 27 日开始预购,11 月 3 日开始发售,听说限购,所以看到我文章的,准备去预约吧,预约到了转手卖出,说不定能赚点小钱,当然了土豪都是买来自己用,那么你不要的iPhone7能便宜卖给小弟我吗,感激不尽。下文中我就以X代表iPhoneX来表述。在网上搜了一下适配X的文章,都是说什么X的屏幕密度、X的屏幕高度、X的屏幕宽度和8的宽度一样什么什么的看得我一脸懵哔。
适配第一步
首先需要一张启动图尺寸为1125*2436,添加到项目中的启动图处。
安全区域
在X的屏幕上,statusBar的高度是40,底部虚拟home键区域高度34(别告诉我你不知道statusBar和底部虚拟Home键),那么屏幕高度[[UIScreen mainScreen] bounds].size.height - 74 = 剩下的区域就是所谓的安全区域,与非X的iPhone手机相比呢,就多占用了屏幕高度的54个单位。没错,我是这样理解安全区域的。
navigationBar和statusBar高度
如果你所在的项目都是用代码编写的,那么这个时候我建议你复制我这里的几个宏,对应的也不用写注释了,相信不管你是老司机还是新司机,都能明白这几个宏的意思,实在不明白我也帮不了什么忙。
#define kStatusBarHeight [[UIApplication sharedApplication] statusBarFrame].size.height
#define kNavBarHeight 44.0
#define kTopHeight (kStatusBarHeight + kNavBarHeight)
具体的用法呢,就是,如果你项目中有计算用到±64,同时这个64是你代表statusBar+navgationBar的地方,都替换为kTopHeight就可以了。
底部tabBar
同上,你仅需要用宏去控制一下你项目中所有用到±49,同时这个49是代表你tabBar的高度的地方。
#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)
#define isIPhoneX kTopHeight > 64
#define kSafeAreaBottom isIPhoneX ? 34 : 0
如果没有tabBar,也需要去适配底部虚拟home键的区域差。方法就是在所有有计算页面frame展示的地方±kSafeAreaBottom就可以了。另外,tabBar的高度一定要设置为kTabBarHeight。
xib适配安全区域
如果你所在项目所有控制器都有xib,或者故事版,那这个适配的话就要好做些了,相信一张图就能看明白所有,如下:
tmp1acede07.png选中控制器的view,然后选file inspector,勾选Use SafeArea Layout Guides,你就会发现你的View下面多了一个类似控件的Safe Area,你就可以对它设置约束,比如View下面是TableView,只需将TableView的bottom约束=Safe Area的Bottom就可以了。具体怎么设置就不多说了。
最后
祝看到此文的朋友升职加薪天天开心,有个好身体!
网友评论