iPhoneX xib刘海屏 适配导航栏

众所周知,苹果从去年开始退出了刘海屏,导致现在市场上一堆的刘海屏幕,不管是Apple还是其他手机厂商的。在这里真是向吐槽一下国产品牌,特别是某两款手机,如果不开机不看 logo 的话很难识别是苹果还是某 po、某 vo 手机。闲话不多说,接下来我们讲讲怎么在 xib 中适配导航栏。

刘海屏推出的同时,iOS 系统也同步更新到了11.0,这个版本改动还是比较大的,毕竟是要为了刘海屏做些相应的改变。这其中个人认为最大的特点就是推出了安全区域 SafeArea概念,至于这个安全区域 SafeArea是什么,简单来说就是视图上不被其他视图所遮挡的区域,网上有很多这类的资料,在这就不详舒了。xcode 在 ios11及之后系统这个safeAreaInsets才为(20,0,0,0)或者(44.0.34.0),否则都是(0,0,0,0);

注意

在开发过程中我发现用iPhoneX 之前的手机中并且系统是 iOS12之前的系统时,safeAreaInsets会一直为(0,0,0,0)。不知道你们是不是也是这样的情况。

刘海屏幕的推出导致 iPhoneX 系列的手机状态栏从20变成44,状态栏从64变成88,获取导航栏高度可以看我这片博客,https://www.jianshu.com/p/4f9d750702ec

如果你的项目中有这类需求:

  • 不隐藏状态栏
  • 自定义导航栏
  • xib 来布局
    可以参考接下来我的做法,定义一个优先级高的距离self.view.top 至少64高度的约束A,再定义一个优先级低的相对于Safe Area.top距离44的约束 B,这样就能兼容Safe Area.top为0的情况了。
    如果你有类似的问题没有解决,也可以在简书上私信我。
    WX20181213-115632@2x.png
WX20181213-115721@2x.png
WX20181213-115753@2x.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容