我的iOS11及iPhoneX适配(三)

今天说说在iPhoneX适配碰到的问题:

一、部分页面顶部超过了iPhoneX的“刘海”

二、部分页面底部被虚拟home按键遮挡。

我的iOS11及iPhoneX适配(三)


我的iOS11及iPhoneX适配(三)


我的iOS11及iPhoneX适配(三)


我的iOS11及iPhoneX适配(三)


造成以上问题是:

一、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(这个问题跟导航栏类似),当然还需要注意的是,状态栏的高度和底部高度调整后,显示页面的高度也都对应的调整。


最后,把上面几个页面修改后的效果:

我的iOS11及iPhoneX适配(三)

我的iOS11及iPhoneX适配(三)

我的iOS11及iPhoneX适配(三)

我的iOS11及iPhoneX适配(三)


以上,只是部分iPhoneX的页面适配。