iOS 7 – 隐藏子视图控制器上的状态栏
UIApplication.SharedApplication.SetStatusBarHidden
(MonoTouch代码,也适用于Obj-C)完成iOS 6的工作,但对于iOS 7,我们必须:
- 在视图控制器上调用
SetNeedsStatusBarAppearanceUpdate ()
(例如:显示全屏图像的视图控制器) - 在同一视图控制器上覆盖
PrefersStatusBarHidden ()
。
然而,上面提到的视图控制器embedded在导航栏中,导航栏也embedded在滑出菜单中。 即使使用AddChildViewController()
将所有embedded式视图控制器添加到层次结构中,尝试更新子视图控制器中的状态栏也不起作用。
有任何想法吗?
编辑
Window.RootViewController (Menu) |___ ViewControllerA (Navigation Bar) |___ ViewControllerB (Actual View controller)
ViewControllerB
想要隐藏/显示状态栏
ViewControllerA应该重写childViewControllerForStatusBarHidden并返回ViewControllerB。
- (UIViewController *)childViewControllerForStatusBarHidden { return _viewControllerB; }
它并不完全是你想要做的。 如果你想简单地隐藏所有子视图控件中的状态栏,你可以设置新的plist属性UIViewControllerBasedStatusBarAppearance
。
…如果您希望select退出此行为,并使用UIApplication statusBarStyle方法设置状态栏样式,请将UIViewControllerBasedStatusBarAppearance关键字添加到应用程序的Info.plist文件中,并将其值设置为NO。
来源: https : //developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uid/TP40013174-CH8-SW1
源代码是一个非常好的参考与iOS7中处理UINavigationBar
和UIStatusBar
有关的各种信息。