1 说下所有资源图片的问题
三款手机屏幕的大小官方截图如下
三款手机的像素对应的图片倍数如下
所以图片倍数这块 ,我们几乎不需要对项目中的页面做调整,那么最后只剩下一部要做 添加两个尺寸的启动图。
2 说下启动图的问题
需要注意的是,当你的老项目用Xcode10打开后,打开Images.xcassets文件夹,再到LaunchImage文件夹下时,找不到以上两个新机型的占位框,最简单的办法就是右键添加一个新的LaunchImage,然后删除老LaunchImage,记得新建的文件夹要改名LaunchImage,新建的LaunchImage会出现两个新机型的占位框。
3 接下来说下项目中代码适配的问题(纯代码中)
<1> 根据宽高度来判断
项目中,我们区分iPhone X 是这样区分的,现在再增加iOS 12新机型的宏定义判断。
以及对于navBar和tabBar的判断
如果小伙伴觉得这个还是麻烦也可以这么写
<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来适配。
如果小伙伴有更好的办法 ,@我 我补充上。