iOS-如何在界面生成器中使用安全区域布局

本篇文章没有要讨论安全区域是什么,只有单纯纪录如何使用界面生成器来更改原始导航栏或工具栏

会有这个需求是因为画面客制化的关系,没办法直接使用原生的导航栏/工具栏,得自己刻出类似的画面。

如果直接把灰色视图的顶部,前导,尾随约束指向安全区域,会变成上图右边的状况,status bar的部分会空着,没办法像左图那样的效果

把view的顶部约束指向指向superview,结果赋予view跑到status bar底下

回到上一个状态(顶部约束指向安全区域),在视图中间加入一个标签,执行结果如下图,但我想要达成的效果应该是标签在相同的位置,视图的高度不变,然后状态栏跟随标签所在的视图是一样的颜色

以下的view指的是灰色长条状,用作考虑的标签的superview

  1. 将标签的顶部约束重新指向视图控制器>视图>安全区域

2.将视图的顶部约束改为指向超级视图,常量设为0,高度设为≥44

3.重新执行后,画面就会如预期想要的那样

4.要特别注意的,标签一定要加上底部约束指向视图,不然就会出现下图的状况

等等,还没结束

以上的作法都是在storyboard完成的,但在xib上会遇到什么事?

一样的autolayout配置,使用在xib上,在iOS12上看是正常的,但iOS10就跑版了,有一部分跑到status bar底下去(如下图)

label增加一个约束(要查看的顶部空间),常量设置≥32,优先级设置为1000,原本指向视图控制器>视图>安全区域的约束(将顶部对齐至安全区域)优先级设为750,再执行一次就可以看到正常的画面

我把范例档案放在这边,有兴趣的话可以载来看看!

iOS –安全区域布局在iOS 9和iOS 10上不起作用

感谢您为Stack Overflow提供答案! 您过去的一些答案尚未得到很好的接受,您正在…

stackoverflow.com