热点或通话状态下的屏幕适配

在连接热点的情况下,部分的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的判断。

你可能感兴趣的:(热点或通话状态下的屏幕适配)