在连接热点的情况下,部分的navigationbar会出现无法自动缩进的问题,一般在这个时候就需要在统一VC继承类(baseViewController)中添加一个方法来规避这个问题
我的做法是在viewWillAppear中添加这个判断,判断是否连接热点是的方法是判断状态栏的高度是否大于20,如果热点连接状态下【或者通话状态下,包括微信视频语音等】,则对navigationbar的高度进行控制
宏定义热点状态
// 状态栏高度大于20(热点被连接时)
#define STATUS_BAR_BIGGER_THAN_20 [UIApplication sharedApplication].statusBarFrame.size.height > 20
// 判断当前设备是否为iPhone X
#define iPhoneX ScreenWidth == 375 && ScreenHeight == 812
处理方法
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (STATUS_BAR_BIGGER_THAN_20) {
if (iPhoneX) {
self.navigationController.navigationBar.height = 44;
} else {
self.navigationController.navigationBar.height = 24;
}
}else{
self.navigationController.navigationBar.height = 44;
}
}
这里需要额外提一下iPhone X的情况,通过测试发现如果直接判断所有机型,iPhone X下高度是不对的,所以单独加了iPhone X的判断。