iOS适配iPhoneX/iphone11/iphone12 导航栏高度 (刘海屏幕)

之前适配导航栏高度(刘海屏)是通过设备类型判断,判断设备为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

再贴个代码截图

iOS适配iPhoneX/iphone11/iphone12 导航栏高度 (刘海屏幕)_第1张图片

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

你可能感兴趣的:(Xcode,ios)