我们在开发中为了适配iPhoneX之后的刘海屏幕,经常得加上各种判断,每年苹果除了新的机型之后可能又得修改
所以给大家介绍一个通用的方法
#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
下面这种也还是可以的
#define isIphoneX ({ BOOL isPhoneX = NO; if (@available(iOS 11.0, *)) { if (!UIEdgeInsetsEqualToEdgeInsets([UIApplication sharedApplication].delegate.window.safeAreaInsets, UIEdgeInsetsZero)) { isPhoneX = YES; } } isPhoneX; })