今天说说在iPhoneX适配碰到的问题:
一、部分页面顶部超过了iPhoneX的“刘海”
二、部分页面底部被虚拟home按键遮挡。
造成以上问题是:
一、iPhoneX 的状态栏高度产生了变化,由 20 变成了 44
二、 iPhoneX 新增了 34 点高度的虚拟 home 区域
因此,iPhoneX的这2个问题主要是对页面顶部和底部高度进行调整。
对于iPhoneX的识别,需要定定义一个宏,目前选用的方法是从高度上判断:
#define isiPhoneX (([[UIScreen mainScreen] bounds].size.height)==812.f ? 1 : 0)
然后对于状态栏的高度调整,把之前定义的状态栏高度是20的宏,改为:
#define STATUS_HEIGHT (isiPhoneX ? 44 : 20)
再添加一个虚拟按键的高度:
#define VirtualHomeForiPhoneX (isiPhoneX ? 34 : 0)
剩下的,就是在需要调整的页面进行响应的高度修改即可。
同时,在修改中也发现一些之前的代码写的不规范的地方,比如有些状态栏的高度没有用宏,直接写的20(这个问题跟导航栏类似),当然还需要注意的是,状态栏的高度和底部高度调整后,显示页面的高度也都对应的调整。
最后,把上面几个页面修改后的效果:
以上,只是部分iPhoneX的页面适配。