我們在開發中為了適配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;\ })