iOS 判断当前设备是否为刘海屏幕
2020-04-20 本文已影响0人
CoderGuogt
iPhone 自从 iPhone X(iOS11)
设备开始了 刘海屏幕
,在之前项目中都是使用判断设备屏幕的大小来判断是否是刘海屏幕
,但是随着苹果设备的更新,这种方式已经不合适继续使用了。
苹果在 iOS11
推出了一个 安全区域
的概念,我们可以通过这个安全区域来判断当前设备是否为刘海屏幕
。
#define kIsBangsScreen ({\
BOOL isBangsScreen = NO; \
if (@available(iOS 11.0, *)) { \
UIWindow *window = [[UIApplication sharedApplication].windows firstObject]; \
isBangsScreen = window.safeAreaInsets.bottom > 0; \
} \
isBangsScreen; \
})
在这里之所以使用 windows
是因为,keyWindow
、delegate.window
有时候会获取不到,为null
经过以上测试,发现每次 windows
数组都是有值,所以直接从windows
数组中取出一个window
,再进行判断。