我正在使用 Xcode 模拟器测试 iPhone X 的行为。出于某种奇怪的原因,如果我隐藏状态栏,导航栏会向上推,导致标题完全消失并切断左右按钮。这只发生在 iPhone X 上。
插图:
如何隐藏状态栏并将导航栏保持在可见位置?
更新:
说服您的示例项目:
https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing
我正在使用 Xcode 模拟器测试 iPhone X 的行为。出于某种奇怪的原因,如果我隐藏状态栏,导航栏会向上推,导致标题完全消失并切断左右按钮。这只发生在 iPhone X 上。
插图:
如何隐藏状态栏并将导航栏保持在可见位置?
更新:
说服您的示例项目:
https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing
一种解决方案是将导航控制器嵌入到容器视图控制器中,该控制器被适当地限制在安全区域内。
只需创建另一个视图控制器并从对象库中拖动一个“容器视图”。此视图对安全区域具有顶部、底部、前导和尾随约束,所有常量都等于 0。如果您从容器视图中按住 control 并拖动到导航控制器,您将获得一个选项来设置“嵌入转场” " 这会将选定的视图控制器嵌入为子视图控制器。
我将状态栏设置为在我创建的新视图控制器上隐藏,它工作正常。
这感觉像是UINavigationBar
应该自动处理的事情,但这种解决方法似乎应该工作得很好。
另一个注意事项:如果您更改导航栏的颜色,您还需要在容器视图上方创建另一个视图,并更改其颜色以匹配导航栏的颜色。
对于一个小型应用程序,我从使用 Push 更改为 Modal segue 并添加了我自己的导航栏。我使用 Push 是因为它看起来不错,并且已经有一个 Modal 用于另一部分,出于风格原因,我想对其进行不同的动画处理。
对于较小的应用程序,这可能是最快和最简单的解决方案,但我的下一次更新需要使用导航控制器。为此,我想我会打开状态栏,这对我来说没什么大不了的,可以让它工作。
我认为您需要在 iOS 11中使用“safeAreaLayoutGuide”新更新
Apple 为我们提供了必要的 API 来绕过这个 iphone x 的不安全区域。我们通过在代码 safeAreaLayoutGuide中使用新的safeAreaLayoutGuide锚点来做到这一点