iOS 判断当前设备是否为刘海屏幕

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 是因为,keyWindowdelegate.window有时候会获取不到,为null

iOS13环境 iPhone11 Pro Max模拟器
iOS12.4 iPhone5s 模拟器

经过以上测试,发现每次 windows 数组都是有值,所以直接从windows数组中取出一个window,再进行判断。

你可能感兴趣的:(iOS 判断当前设备是否为刘海屏幕)