ios ~ 命令宏定义方法函数

1、在PrefixHeader.pch文件定义:(pch文件设置相对路径)

// reason: 有一些地方需要用到 接口参数token(token有时间期限),当token过期时,需重新登录,刷新保存在本地的token
#define responseObjectLinkCodeWithParam(resultCode) if (resultCode  == 401) {\
    LoginViewCTRL *loginVireCTRL = [[LoginViewCTRL alloc] init];\
    loginVireCTRL.loginVieCTRLBlock = ^{};\
    [self.navigationController pushViewController:loginVireCTRL animated:YES];\
    return;\
}

2、调用宏:

responseObjectLinkCodeWithParam(reCode);

3、例如:

问题:
有些情况下,我们需要获取屏幕的状态栏高度,很多人使用类似下面的宏:

#define StatusBar_HEIGHT     (DEVICE_IS_FULL_DISPLAY ? 44.: 20.)

然而从iOS 14开始,全面屏iPhone的状态栏高度不一定是44了,比如下面就是这些设备在iOS 14.1上的状态栏高度。

设备 状态栏高度
iPhone XR/11 48
iPhone X/11 Pro/ 11 Pro Max/12 mini 44
iPhone 12/12 Pro/Pro Max 47

解决办法:
根据不同系统,通过相应方法获取状态栏高度。使用下面的:k_Height_StatusBar

+ (CGFloat)statusBarHeight {
    CGFloat statusBarHeight = 0;
    if (@available(iOS 13.0, *)) {
        statusBarHeight = [UIApplication sharedApplication].windows.firstObject.windowScene.statusBarManager.statusBarFrame.size.height;
    } else {
        statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
    }
    return statusBarHeight;
}
在使用命令宏时,这样写:
//判断是否是 x系列
#define iPhoneX  \
({BOOL isPhoneX = NO;\
if (@available(iOS 11.0, *)) {\
isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0;\
}\
(isPhoneX);})

//NavBar高度
#define k_Height_NavContentBar 44.0f
//状态栏 statusBar 高度
//#define k_Height_StatusBar [[UIApplication sharedApplication] statusBarFrame].size.height
// 然而从iOS 14开始,全面屏iPhone的状态栏高度不一定是 44 或 20 了,比如下面就是这些设备在iOS 14.1上的状态栏高度。(还可能时47、48)
#define k_Height_StatusBar \
({\
CGFloat statusBarHeight = 0;\
if (@available(iOS 13.0, *)) {\
    statusBarHeight =[UIApplication sharedApplication].windows.firstObject.windowScene.statusBarManager.statusBarFrame.size.height;\
} else {\
    statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;\
}\
(statusBarHeight);\
})
//导航栏的高度
#define k_Height_NavBar k_Height_StatusBar + 44
//TabBar高度
#define k_Height_TabBar (iPhoneX ? 83.0 : 49.0)
//底部安全区的高度
#define k_XBOTTOM_HEIGHT        (iPhoneX ? 34.0 : 0.0)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容