iOS 判断设备是齐刘海机型

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!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容