iOS开发之适配判断刘海屏幕
我们在开发中为了适配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;\ })