iPhoneX适配

作者: TaiXiang | 来源:发表于2017-09-30 12:01 被阅读41次
    开篇废话

    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就可以了。具体怎么设置就不多说了。

    最后

    祝看到此文的朋友升职加薪天天开心,有个好身体!

    相关文章

      网友评论

        本文标题:iPhoneX适配

        本文链接:https://www.haomeiwen.com/subject/wfxiextx.html