iPhone XR XS XSMas尺寸适配问题

1   说下所有资源图片的问题

        三款手机屏幕的大小官方截图如下

    三款手机的像素对应的图片倍数如下

iPhone XR XS XSMas尺寸适配问题_第1张图片

所以图片倍数这块 ,我们几乎不需要对项目中的页面做调整,那么最后只剩下一部要做 添加两个尺寸的启动图。


2   说下启动图的问题

    需要注意的是,当你的老项目用Xcode10打开后,打开Images.xcassets文件夹,再到LaunchImage文件夹下时,找不到以上两个新机型的占位框,最简单的办法就是右键添加一个新的LaunchImage,然后删除老LaunchImage,记得新建的文件夹要改名LaunchImage,新建的LaunchImage会出现两个新机型的占位框。

iPhone XR XS XSMas尺寸适配问题_第2张图片

3  接下来说下项目中代码适配的问题(纯代码中)

<1> 根据宽高度来判断

项目中,我们区分iPhone X 是这样区分的,现在再增加iOS 12新机型的宏定义判断。

iPhone XR XS XSMas尺寸适配问题_第3张图片
宏定义

以及对于navBar和tabBar的判断

iPhone XR XS XSMas尺寸适配问题_第4张图片

如果小伙伴觉得这个还是麻烦也可以这么写

<2> 也可以根据iPhoneXS Max,iPhoneXS,iPhoneXR,iPhoneX 的宽高比近似做的判断。

<3>还可以鉴于iPhone X/XS/XR/XS Max底部都会有安全区,所以可以用safeAreaInsets.bottom > 0.0来判断是否是iPhoneX/XS/XR/XS Max。注意:safeAreaInsets只在iOS11以及之后的版本可用

if (@available(iOS 11.0, *)) {

        UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];

        if (mainWindow.safeAreaInsets.bottom > 0.0) {

            iPhoneXSeries = YES;

        }

    }

以上是纯代码写项目的时候用到方法, xib  storyboard 用AutoLayout 中的Safe Area 就不做介绍了 苹果官方也是推荐使用 xib  storyboard来适配。

如果小伙伴有更好的办法 ,@我  我补充上。

你可能感兴趣的:(iPhone XR XS XSMas尺寸适配问题)