之前适配导航栏高度(刘海屏)是通过设备类型判断,判断设备为x、11或者12 之后,设置导航栏高度为88!但这样有一个缺点,就是要写好多设备类型代码且苹果出一个设备就得加一个判断~~

现在可以通过状态栏的高度来设置导航栏高度,我们通常讲的导航栏其实就是状态栏+导航栏:

导航栏(口头语)=状态栏+导航栏(真正的导航栏)

导航栏:CGRect rectNav = self.navigationController.navigationBar.frame;

状态栏:CGRect statusRect = [[UIApplication sharedApplication] statusBarFrame];

通过代码我们知道,导航栏的高度永远为44,不同机型的状态栏高度不同,(iphone6s为20,iphone8P为20,iphone11为48,iphone12为47 ……)

通过大量测试我们发现,有刘海屏的手机状态栏都大于20,所以可以通过状态栏的高度来设置状态栏高度。代码如下:

+ (BOOL)supportFaceID{
//获取状态栏高度

float statusHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;

if (statusHeight > 20){
return YES;

}else{
return NO;

}

}

朋友们在需要的地方调用这个方法来判断导航栏高度,Yes为88,No为44

再贴个代码截图

%title插图%num

(注:虽然不同刘海屏手机的状态栏+导航栏的*终高度不为88,但是为了写适配方便,我们统一把它设置为88)