状态栏颜色在iPhone X上没有变化到凹口的左侧和右侧

时间:2017-11-16 18:34:55

标签: ios statusbar ios11 iphone-x safearealayoutguide

你好我更新到新的Xcode 9并开始使用safeAreaLayout指南来支持iphone X.从xib,我刚刚使用了safeAreaLayout指南,并通过topAree来限制安全区域。

这是我得到的

iphone X(iOS 11)

iphone 6(iOS 11)

正如您所看到的,我的自定义导航栏下降了20pxls

iphone 6(iOS 9和10)

在这里,您可以看到导航栏如何从0开始并且状态栏已合并。

实际上,

1)我希望绿色填充缺口。 2)状态栏不应显示为白色,而应显示为3图像中的绿色。

我搜索了很多解决方案。但没有一个工作。所以我需要帮助。

此致 兰吉特

3 个答案:

答案 0 :(得分:0)

您的自定义栏的视图布局如下:

textInput

任何受限于view.safeAreaLayoutGuide.topAnchor的东西都会低于statusBar + navigationBar,因为那是安全区域。如果它被约束到safeAreaLayoutGuide.bottomAnchor,那么它将位于所有tabBars或底栏之上,以便iPhone X用户可以在不触摸视图的情况下向上滑动..

然而,任何约束于view.topAnchor的东西都会被限制在视图的顶部(IE:屏幕)..

因此,将自定义视图限制在控制器视图的顶部。然后在TextField中,将[nav.topAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.topAnchor];添加到高度。这将允许您的视图触摸屏幕顶部,但高/大到足以延伸到导航栏下方。您需要调整视图的内容,以便通过相同的插入顶部进一步向下布局。

viewDidLayoutSubviews

答案 1 :(得分:0)

状态栏的背景显示其下方视图的颜色。要更改状态栏"的颜色,您需要在其后面放置一个视图并为该视图提供背景颜色。

要解决您的问题,最简单的解决方案是创建一个单独的视图,该视图始终是状态栏的高度,并且与自定义导航视图具有相同的背景颜色。

要执行此操作,请将新视图的顶部固定在超级视图的顶部,并将其底部固定在自定义导航视图的顶部。

此解决方案比将顶部安全区域插入的高度添加到自定义导航视图更简单,因为它可以避免调整自定义视图的布局以考虑此额外变量高度。

答案 2 :(得分:0)

1-您应该为视图的顶部约束选择superview(如果没有)

enter image description here

2-双击此约束。如果您看到Margin

enter image description here

3-取消选中相对于保证金

enter image description here

4-再次将约束值设置为0