以前的适配方法
苹果最新出的机型,带着刘海真的是超级难看。我觉得乔布斯再世一定会阻止这种设计,同时我觉得面部识别也没什么卵用,5StouchID那么灵敏,你弄了个压力屏以后,touchID变得屎一样。还有你的那个压力屏,轻按重按,使劲按,这种东西到现在也没什么特别有用的地方好不,苹果用户亲身体验,当然只代表我个人看法。
书归正传,他是爸爸,他爱怎么设计就怎么设计吧。我们现在来看一下如何适配,我先说一下我以前的适配方式,mansory。没错,如果用了这个,好像也不用考虑屏幕大小了吧?然而项目老代码还是有一部分属于原始代码,同时从刘海屏幕开始,苹果弄了个SafeArea的东西。老代码宏定义了两个类,lsRadioX和lsRadioY
#define lsRadioX [[UIScreen mainScreen] bounds].size.width/375#define lsRadioY [UIScreen mainScreen].bounds.size.height/667复制代码
这两行代码用起来就是这样的,我们用设计稿的x坐标(我们设计稿都是苹果6的设计稿)乘以lsRadioX,就得到了理论上任意屏幕宽的坐标。解释起来其实就是按照比例来的,设计稿上按钮长度60,那么这个60就占苹果6的屏幕宽的60/375,那么任意屏幕上的宽度就是[[UIScreen mainScreen] bounds].size.width的60/375。
现在的适配情况
首先新机型要添加对应的LaunghImage,这个我就不说了。另外刘海屏幕的适配方案,也暂时不去讨论,因为1个是我们的设计压根不考虑这个东西,另一个是还没研究。就说上面的那种方法,到现在以后遇到了极大的问题。因为苹果神经病一样给iphoneX和XsMax设计的特别长,它和苹果6基本上用一套设计稿的话也不能通过直接比例转化这种简单的方式了。所以现在只能写一个宏
#define lsRadioY ([UIScreen mainScreen].bounds.size.height>736?1:[UIScreen mainScreen].bounds.size.height/667)复制代码
即使这样仍然有部分页面适配出现问题,原因很简单,因为苹果的全面屏,出来一个safeArea,安全区域。原本的手机可视区域就是安全区域,但是iphoneX系列的就不是了,而是截取头部88距离(没错由于状态栏从20变成了44,导航栏整体就变成了88),还有底部34的距离(底部圆角的距离)。
好了,大概就这个样子,写东西嘛方便自己加深理解,有机会帮到别人就更高了,我自知才疏学浅,这里有一个写的更详细的,涉及到iOS11的适配,本文暂不引用啦。