iPhone X - 隐藏状态栏向上推动导航栏

时间:2017-09-29 11:25:00

标签: ios uinavigationcontroller uinavigationbar statusbar iphone-x

我正在使用Xcode模拟器测试iPhone X的行为。由于一些奇怪的原因,如果我隐藏状态栏,导航栏向上推动导致标题完全消失并切断左右按钮。 仅在iPhone X上发生

插图:

enter image description here

如何隐藏状态栏并将导航栏保持在可见位置?

更新:

您的说服示例项目:

https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing

3 个答案:

答案 0 :(得分:13)

一种解决方案是将导航控制器嵌入容器视图控制器中,该控制器被适当地约束到安全区域。

storyboard setup

只需创建另一个视图控制器并从对象库中拖动“容器视图”。此视图具有安全区域的顶部,底部,前导和尾随约束,所有约束均等于0.如果您从容器视图控制拖动到导航控制器,您将获得设置“嵌入segue”的选项“它将选定的视图控制器嵌入为子视图控制器。

我将状态栏设置为隐藏在我创建的新视图控制器上,并且工作正常。

screenshot of working layout on iPhone X

这感觉就像UINavigationBar应该自动处理的东西,但这种解决方法似乎应该可以很好地工作。

另一个注意事项:如果更改导航栏的颜色,还需要在容器视图上方创建另一个视图,并更改其颜色以匹配导航栏的颜色。

答案 1 :(得分:0)

我,对于一个小应用程序,从使用Push转换为Modal segue并添加到我自己的导航栏中。我使用Push是因为它看起来不错,并且已经有另一部分的模态,我想以风格为原因进行不同的动画制作。

对于较小的应用程序,这可能是最快捷,最简单的解决方案,但我的下一次更新需要使用导航控制器。为此,我想我会打开状态栏,这对我来说没什么大不了的,并允许它工作。

答案 2 :(得分:0)

我认为您需要在iOS 11中使用"safeAreaLayoutGuide"新更新

Apple为我们提供了必要的API,以解决这款iphone x的不安全区域。我们通过在代码中使用新的safeAreaLayoutGuide锚点来完成此操作 safeAreaLayoutGuide

相关问题