自从IPhone X一上市,iOS coders 可谓是抠破了脑袋,不知如何对待那可恶的齐刘海和平下巴,其实在上市之前就有很多人大胆的做过一些适配,当然苹果官方也给出过适配方案——SafeArea。
接下来我就简单谈谈我对适配的几点看法,当然仅代表个人看法(只提思想,代码还有demo我就附一个链接),有不对的地方还请大神指出。
其实iOS coder 都知道IPhone X 头部导航栏和状态栏总高由64变成了88,状态栏由20变成了44,底部tabbar由49变成了83,宽没变375,可是高却增高了许多,变成了812;这个时候我们就首先要考虑的是头部和底部的适配,其次才是整体坐标的变化。
一、每个页面单独针对IPhone X进行处理,判断当前屏幕高度来设置各个控件的坐标。(这种不推荐使用,太过于麻烦)。
二、用宏定义来灵活设定导航栏和tabbar的高度——适用于自定义导航栏和tabbar的情况。
#define ScreenW [UIScreen mainScreen].bounds.size.width
#define ScreenH [UIScreen mainScreen].bounds.size.height
#define TabbarH ((ScreenH == 812) ? 83 : 49)
#define NavH ((ScreenH == 812) ? 88 : 64)
三、用苹果官方提供的SafaArea,基本思想是:建立一个UIViewController 扩展文件(也可以说是分类),在分类中定义一个contentView属性,contentView的内容要用masonry 把safeArea做好,然后所以控制器上添加视图时就在这个contentView上添加,而不再是用self.view,这样就能完美适配,当然这种方法适合纯代码项目,当有xib时,参考这篇文章:xib SafeArea的使用
注意:这个方法适用于用系统自带的导航栏。一旦是自定义的view来替代系统的导航栏,适配就会出问题。还有就是全局的布局方式都只能是masonry,frame的思想,朋友你可以抛开了,不然会有你想不到的问题出现。
当然思想说了,肯定是要附上demo的:这是别人的demo,我觉得还不错
网友评论