方式一、以statusbar的高度进行判断,如下:(有瑕疵)
#define isIPhoneXAll ([[UIApplication sharedApplication] statusBarFrame].size.height == 44)
问题1、在设置不展示状态栏时渠道的状态栏高度就是0,导致判断出错
问题2、这种写死的等于某个数字的判断有风险,在苹果后续某个系统版本如果修改了具体的值会导致线上的版本判断出错
隐藏状态栏的修改如下:
1.全局设置隐藏状态栏
修改info.plist文件的属性View controller-based status bar appearance
:
所有页面的statusBar高度都将变成0.
2.单独在某个controller设置隐藏
// 代码调用隐藏状态栏
[UIApplication sharedApplication].statusBarHidden = YES;
此页面的状态栏高度为0.
参考:
方式二、判断safearea是否是UIEdgeInsetsZero,如果不是,则是刘海头手机
#define IPHONE_X \
({BOOL isPhoneX = NO;\
if (@available(iOS 11.0, *)) {\
isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\
}\
(isPhoneX);})
参考:
网友评论