iOS 判断机型是否为 iPhone X、XR、XS、XS Max ........的方法.
诉求:
出iPhone X的时候,写个宏LL_iPhoneX,是通过屏幕宽高去判定的。齐刘海设备越出越多,不能再一一去判断,代码写得多不说,每次出新款都要发版很不方便。
实现原理:
由于iphone x屏幕不是传统的长方形了,而是圆角矩形。如何判断当前的屏幕是长方形还是圆角矩形呢? 可以使用windows的safeAreaInsets方法,当返回值为0时,为长方形,非0时即认为是iphone x.
iOS11之前还没出齐刘海设备,所以iOS11之前的设备都是长方形。
解决:写个宏定义:
// 判断是否为iPhone X 系列 这样写消除了在Xcode10上的警告。
#define LL_iPhoneX \
({BOOL isPhoneX = NO;\
if (@available(iOS 11.0, *)) {\
isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\
}\
(isPhoneX);})
打印了CGFloat f = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom.在齐刘海设备是34,长方形设备上是0.
OK!
网友评论