Safe Area解析(二) —— 你为什么并不safe?(一)

版本记录

版本号 时间
V1.0 2018.05.26

前言

Safe Area是iOS 9新出的,它的出现一定程度上解决了很多适配的问题,可以说解决了很多UI方面的问题,你再也不用担心状态栏是否被覆盖,特别是iphone X出现以后,状态栏和底部都留有和其他机型不同的高度,这给适配带来更多的麻烦,但是Safe Area预留出来安全区域,可以让你对UI的适配无后顾之忧。感兴趣的可以看我上面写的几篇文章。
1. Safe Area解析(一) —— Safe Area由来及简单使用(一)

Safe Area真的就安全吗?

相信我这么问,那么答案就是不一定,它不一定就是安全的。

尽管是9系统出来的,但是对于10系统的适配,它顶部距离Safe Area顶部这个约束并不生效,这可能是苹果的一个BUG,现在还未解决,直到前几天做项目,其他操作系统直播间内根视图都没问题,预留出来了状态栏,但是对于7plus 10系统的手机,状态栏的位置没有预留出来,也就是10系统的Safe Area顶部这个约束是没有生效的,具体如下图所示:

Safe Area解析(二) —— 你为什么并不safe?(一)_第1张图片
根视图的约束

运行起来,看效果

可以看见,顶部状态栏的位置并未预留出来,顶部约束没有生效。我尝试其他系统的手机就都是正常的。


问题解决

有了10系统Safe Area这个问题,那么就要解决。

1. 解决思路

可以按照下面的步骤解决这个问题:

  • 为跟视图的顶部再设置一个约束,距离他的父视图间距设置为20,并将该约束拖到VC中,判断如果是iphone X就设置为44,优先级设置为1000(这个是默认的不用你修改什么)。
Safe Area解析(二) —— 你为什么并不safe?(一)_第2张图片
设置顶部距离父视图的约束
  • 将原先顶部距离Safe Area的约束优先级降低为750或者更低,设置好的约束,如下所示。
Safe Area解析(二) —— 你为什么并不safe?(一)_第3张图片
Safe Area解析(二) —— 你为什么并不safe?(一)_第4张图片

2. 实现效果

经过上面几步,问题就解决了,可以很好的实现了效果,具体如下所示:

Safe Area解析(二) —— 你为什么并不safe?(一)_第5张图片
实现效果

可以看见,预留出来上面状态栏的位置,用7plus 10系统手机进行的验证。同时,也用其他机型进行验证,结果还是正常的,没有问题。

对于这个BUG,我感觉苹果是知道的,但是因为什么不修改我也不清楚,但是影响了Safe Area这个适配利器在UI适配上的作用,让其性能大打折扣,希望可以早点修改过来,可以让设计人员减少劳动,或者更佳的设计体验。

后记

本篇主要讲述了在工作中遇到的一个Safe Area顶部约束不起作用的一个苹果BUG,感兴趣的给个赞或者关注,谢谢~~~~

Safe Area解析(二) —— 你为什么并不safe?(一)_第6张图片

你可能感兴趣的:(Safe Area解析(二) —— 你为什么并不safe?(一))