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)