美文网首页
最全最准确获取iOS 状态栏、导航栏、TabBar高度

最全最准确获取iOS 状态栏、导航栏、TabBar高度

作者: chenshilin | 来源:发表于2022-07-15 17:23 被阅读0次

    前言

    最近在iPhone 12 系列机型上开发项目时,发现使用项目提供的获取状态栏、导航栏高度方法获取到的高度是错误的,随后跟踪排查最终解决这个问题,所以自己想简单的总结一下问题原因和解决办法。

    本文主要介绍问题原因和解决办法,最终提供一个能准确获取iPhone 状态栏、导航栏、TabBar高度的方法。

    问题原因

    出现问题的原因是,我们大多开发在使用获取状态栏、导航栏高度方法都是以下方法来获取的:

    在iOS 14系统以前,使用这种方法获取是没有问题的,但是在之后,刘海屏的手机状态栏高度就不在是统一的44px咯,根据下表我们看一看目前iOS 15系统上的各机型的状态栏高度:

    使用系统方法获取状态栏高度

    可以看出使用上面方法已经不在满足我们的开发需求了,于是我就想到使用系统提供的方法来获取,通过UIApplication单例中的statusBarFrame属性获取状态状态栏改度:

    我发现 iOS 13.0系统 之后,UIApplication 单例中的 statusBarFrame 属性被废弃了。不建议使用了,系统希望我们使用 UIStatusBarManager 类中的 statusBarFrame 来进行获取:

    代码模块

    为了统一和方便快速获取系统顶部和底部安全区、顶部状态栏和导航栏、底部 tabBar,我将新建一个分类来实现这些方法,方便项目全局引用:

    在UIDevice+StateHeight.h中,声明各方法名称:

    在 UIDevice+StateHeight.m 中实现各方法进行。

    相关文章

      网友评论

          本文标题:最全最准确获取iOS 状态栏、导航栏、TabBar高度

          本文链接:https://www.haomeiwen.com/subject/fflcirtx.html