UIApplication.SharedApplication.SetStatusBarHidden
(MonoTouch代码,但也适用于Obj-C)为iOS 6做了工作,但对于iOS 7,我们必须:
SetNeedsStatusBarAppearanceUpdate ()
(例如:显示全屏图像的视图控制器)PrefersStatusBarHidden ()
。然而,上面提到的视图控制器嵌入在导航控制器中,导航控制器也嵌入在滑出菜单中。即使使用AddChildViewController()
将所有嵌入式视图控制器添加到层次结构中,尝试更新子视图控制器中的状态栏也无效。
有什么想法吗?
修改
Window.RootViewController (Menu)
|___ ViewControllerA (Navigation Bar)
|___ ViewControllerB (Actual View controller)
ViewControllerB
想要隐藏/显示状态栏的位置
答案 0 :(得分:7)
ViewControllerA应覆盖childViewControllerForStatusBarHidden并返回ViewControllerB。
- (UIViewController *)childViewControllerForStatusBarHidden {
return _viewControllerB;
}
答案 1 :(得分:1)
它似乎并不完全是您尝试做的事情。如果您只想在所有子视图控件中隐藏状态栏,则可以设置新的plist属性UIViewControllerBasedStatusBarAppearance
。
...如果您希望退出此行为并设置状态栏 样式通过使用UIApplication statusBarStyle方法,添加 UIViewControllerBasedStatusBar应用程序的Info.plist的外观键 文件,并给它值NO。
源代码是BTW,它是对iOS7中处理UINavigationBar
和UIStatusBar
的各种信息的一个很好的参考。