在隐藏状态栏的同时保持UINavigationBar大小

我一直试图保持调用setNeedsStatusBarAppearanceUpdate时移动/resizeUINavigationBar

当状态栏与animation一起隐藏时,我想保持导航栏的高度为64像素。

任何帮助,将不胜感激!

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

我有同样的问题,并可以解决它改变windowLevel UIWindowLevelStatusBar

你可以这样做

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

我刚刚实施了这个解决scheme,经过多次失败的尝试,修复了在视图控制器之间切换时出现的问题,其中一个显示状态栏,另一个不显示。 这是我find的最好的解决scheme。

我在UINavigationController的子类中做了1.。 我认为这是您通过导航控制器子视图控制器时保持一致的最佳select。 我没有testing其他选项(直接把它放在子VC中)。

为什么这个工作,为什么这是最好的方式去:

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