美文网首页
IPhone X 适配方案

IPhone X 适配方案

作者: 奇怪的她的他 | 来源:发表于2017-11-30 17:51 被阅读50次

自从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,我觉得还不错

四、是第二种和第三种的一个结合,在第二种方法的基础上,自定义一个基类,可以命名BaseViewController,然后在这个Vc里自定义一个bgView,属性要写在.h文件中,然后给这个bgView设定一个大小,根据自己需要。最后创建其他类时,都继承自该类,每次用self.bgView代替self.view,添加子视图。优点——既能使用masonry,也能用frame布局子视图。当然前提是尽量纯代码。

相关文章

网友评论

      本文标题:IPhone X 适配方案

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