11

UINavigationBar打电话时我一直在努力避免移动/调整大小setNeedsStatusBarAppearanceUpdate

当状态栏隐藏动画时,我想将导航栏保持在完整的 64px 高度。

任何帮助,将不胜感激!

更新:我能够通过创建一个新的UIWindow并覆盖状态栏来克服这个问题。

4

2 回答 2

0

我有同样的问题,并且可以修复它,将 windowLevel 更改为 UIWindowLevelStatusBar

于 2014-01-16T10:19:23.333 回答
0

你可以这样做

  1. 默认情况下,将视图控制器的完整视图向下移动到 20px 降低的位置,与状态栏的高度相匹配(即,无论状态栏是否显示,它都将保持不变)。您可以通过更改框架的 y 位置和高度来做到这一点。
  2. 通过将 UIWindow.backgroundColor 更改为您喜欢的任何颜色(正常情况下为白色)来修复您现在在顶部最可能不需要的黑条。

在多次尝试修复在显示状态栏而另一个不显示状态栏的视图控制器之间切换时出现的卡顿问题,我刚刚实施了这个解决方案。这是我找到的最好的解决方案。

我做了 1. 在 UINavigationController 的子类中。我认为这是您在浏览导航控制器子视图控制器时保持一致的最佳选择。我没有测试其他选项(直接放在子 VC 中)。

为什么这行得通,为什么这是最好的方法:

导航栏实际上总是 44 点高(正如评论者已经提到的那样),但 20 点的状态栏将其向下推。将相同数量 (20) 的整个视图向下推,确保最一致的行为。每当您尝试直接操作 UINavigationBar 时,iOS 都会竭尽全力扭转这种变化。

于 2016-04-07T10:41:07.590 回答