适配iPhone Xs Max XR 坑点

    首先我们对比一下iPhoneX和这次新发布的三款手机的尺寸:

    iPhoneX (@3x) 的分辨率:2436 * 1125 || pt: 812 * 375

    iPhoneXs (@3x) 的分辨率: 2436 * 1125 || pt: 812 * 375

    iPhoneXs Max (@3x) 的分辨率:2688 * 1242 || pt: 896 * 414

    iPhoneXr (@2x) 的分辨率:1792 * 828 || pt: 896 * 414

可以看出,Xs是和X的尺寸一样,这个不用适配也都正常。而Xs Max和Xr的像素是一样的,所以我们只需要适配896 * 414 尺寸即可。他们的刘海高度都一样,也就是说在这四种都按照iPhoneX的逻辑即可。

点一:

需要给项目添加Xs Max的启动图,如果没有添加的话,默认获取到的仍然是X的尺寸。这是苹果做的兼容处理,认为你的项目还没有适配Xs Max,所以就给你兼容了一下。加上启动图之后获取到的就是正确尺寸啦。

点二:

在判断是否有刘海时,不要使用尺寸了。iOS 11 引入了safeAreaInsets,只用这个进行判断能够通杀这四种尺寸

点三:

在界面中弹出个alert之后,再使用safeAreaInsets进行判断,发现结果不正确。这是由于弹窗会改变keywindow导致的,注意代码的书写

点四:

在模拟器中获取到的XS Max尺寸都正常,但是在真机中仍获取到的是X尺寸。这个一直没能搞清楚是怎么回事????

点五:

如果老项目运行之后报info.plist之类的错误,那就是因为引入的第三方库中含有了info.plist文件造成的。需要在Build Phases-----Copy Bundle Resources中删除plist即可

你可能感兴趣的:(适配iPhone Xs Max XR 坑点)