趁着iphoneX大行其道之际,赶紧写一篇低质量的文章,暴力适配下iphoneX
前言:写几个常用的宏定义,和判断iOS版本的方法,适配的时候方便使用
#define iPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,960), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750,1334), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242,2208), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125,2436), [[UIScreen mainScreen] currentMode].size) : NO)
if(@available(iOS11.0,*)) {//判断当前iOS系统版本是不是iOS11
}else{
}
1.iOS11引入了Safe Area Layout Guide概念,如果你的xib报相关错误,那你直接去掉这个选项就好
图1
如果你想用这个新特性的话,也可以,毕竟这个是专为iphoneX的适配而生,只要你在安全区域内布局,它的运行效果一定是上留天下留地,当你使用Safe Area Layout Guide的时候,它的界面上会多出类似于一个view的视图,我们可以把它看做一个不占位置的view,它只提供了一个相对位置,我们的视图根据安全区域适配就好
图2
运行效果如图(如果运行在普通手机上的话,刚好底部铺满,顶部留出20像素的状态栏)
图3
这个状态下,如果创建个view,设置frame是(0,0,100,100)的话,它会从安全区域的(0,0)点开始计算
图4
2.现在进入正题,不用Safe Area Layout Guide如何适配iphoneX:
最容易出问题的地方有:启动图,顶部,底部,tableView,scrollview,collectionView,聊天界面
(1)启动图:适配iphoneX,首先得给启动页一个iphoneX大小的启动图,要不然在iphoneX上运行出来的app是有问题的
图5
(3)前几天看了下美团的大神们的适配方案,感觉不错,然后自己就没动力写了。。。
作者:李世达
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。