1.在项目中添加机型判断:.iPhoneXs屏幕尺寸和iPhoneX一样的,不需要再另外适配,由于iPhoneXR和iPhoneXs Max屏幕宽高一样,故只需添加对iPhoneXR和iPhoneXs Max机型判断即可。
/**
*断当前设备是否为iPhoneXR 或 iPhoneXs Max 的屏幕尺寸
*两个判断依据:
* 1.是否运行在Phone 模式下
* 2.是否屏幕尺寸为(828, 1792)||(1242, 2688)
* (UI_USER_INTERFACE_IDIOM() ==UIUserInterfaceIdiomPhone) && (CGSizeEqualToSize([UIScreenmainScreen].currentMode.size, CGSizeMake(828, 1792) ||(CGSizeEqualToSize([UIScreen mainScreen].currentMode.size, CGSizeMake(1242,2688)))
*/
+(BOOL)isIPhoneXROrXsMax {
if(UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone) {
return NO;
}
returnCGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(414, 896));
}
另外,由于项目中对状态栏、导航栏以及底部Tab bar都加了iPhoneX和非iPhoneX的高度区分,所以我们可以再添加一个新的方法,判断是否是iPhoneX系列(刘海屏系列),包括iPhoneX、iPhoneXs、iPhoneXR以及iPhoneXs
Max,这些设备的状态栏、导航栏以及Tab bar高度都是一样,项目中以前有这块的逻辑统一调整成此方法即可。
/**
*断当前设备是否为iPhoneX 系列的屏幕尺寸(用来设置状态栏/导航栏/Tabbar)
*两个判断依据:
* 1.是否运行在Phone 模式下
* 2.是否屏幕尺寸为(414, 896)||(375, 812)
* (UI_USER_INTERFACE_IDIOM() ==UIUserInterfaceIdiomPhone) && (CGSizeEqualToSize([UIScreenmainScreen].currentMode.size, CGSizeMake(828, 1792) ||(CGSizeEqualToSize([UIScreen mainScreen].currentMode.size, CGSizeMake(1242,2688)))
*/
+(BOOL)isIPhoneXseries {
if(UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone) {
return NO;
}
returnCGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(414, 896)) ||CGSizeEqualToSize([UIScreen mainScreen].bounds.size, CGSizeMake(375, 812));
}
2.开屏图片添加:需要添加一张iPhoneXR和iPhoneXs Max的启动图片。
3.项目中对设备作判断且全屏展示的地方需要添加对iPhoneXR和iPhoneXs Max的判断,添加新尺寸的图片。
4. 项目中部分宏定义用到判断iPhoneX的方法,须将之前判断iPhoneX的方法改为判断iPhoneX系列的方法。
5. 如果有新手蒙版也需将对iPhoneX的判断方法改为判断iPhoneX系列的方法。
6. 项目中其他对iPhoneX的判断:图片高度,视图位置等。