其实iphoneX以上(包括新发布)的机型无非就是多了刘海屏,多了safeArea,所以只要判断有没有safeArea就可以了。
用xcode10打包的前提下
iOS11没有刘海设备的安全区域大小是UIEdgeInsetsMake(0, 0, 0, 0);iOS12没有刘海设备的安全区域大小是UIEdgeInsetsMake(20, 0, 0, 0)
所以这里直接判断safeArea的top是否大于20,大于20是有刘海的设备,否则是无刘海设备
当然也可以判断safeArea的bottom取值,这里判断的是safeArea的top是否大于20
附上代码
#define isIphoneX ({\
int tmp = 0;\
if (@available(iOS 11.0, *)) {\
if ([UIApplication sharedApplication].delegate.window.safeAreaInsets.top > 20 || [UIApplication sharedApplication].delegate.window.safeAreaInsets.left > 20) {\
tmp = 1;\
}else{\
tmp = 0;\
}\
}else{\
tmp = 0;\
}\
tmp;\
})