iPhone X:不安全区域没有获得近视图的颜色

时间:2017-10-23 07:39:03

标签: ios autolayout iphone-x safearealayoutguide

我的应用是使用自定义顶栏而不是UINavigationBar构建的,以满足使用默认UINavigationBar无法轻松完成的一些要求,但是,在阅读this question的答案后,并且将这个顶栏(顶部,前导和尾部)的3个约束更改为相对于安全区域而不是超级视图,我无法获得安全区域自动着色以匹配顶部的颜色吧,这就是现在的样子:

enter image description here

上面链接中的

第一个答案建议手动为状态栏添加颜色,但遗憾的是这是不合理的,它使用私有API来执行此操作。并且第二个答案建议为主视图提供背景颜色,但这也是不合理的,因为我需要为主视图使用不同的颜色。

如何让不安全区域根据与自动布局约束连接的最近视图自行着色?

1 个答案:

答案 0 :(得分:0)

以下是iPhone X上安全区域布局的示例。

https://1.bp.blogspot.com/-nKGb8plVgd8/Wdir-wLm6tI/AAAAAAAADmo/z3G6lWBlomASUtRJ6COYYKPdPC6KdMlBACLcBGAs/s1600/safe_area.png

如果你想要那个不安全的顶级区域"获得与最近视图颜色相同的颜色,您有两个合理的选择。

通过使用两个视图,一个在顶部,顶部约束与 superview 相关(根据故事板上的SafeAreaLayout激活),另一个刚好超出后者,其顶部约束链接到顶级安全区域。之后,将它们链接到您的viewcontroller并将颜色管理到viewDidLoad方法中。

通过仅使用一个视图,另一个选择可能更容易。将其顶部,前导和尾随约束设置为 Superview (而不是安全区域布局)。要避免界面构建器错误,请为视图设置固定高度。

它现在应该正常工作。