iOS 7 - 隐藏子视图控制器上的状态栏

时间:2013-09-21 15:50:31

标签: ios uiviewcontroller xamarin.ios ios7 statusbar

UIApplication.SharedApplication.SetStatusBarHidden(MonoTouch代码,但也适用于Obj-C)为iOS 6做了工作,但对于iOS 7,我们必须:

  1. 在视图控制器上调用SetNeedsStatusBarAppearanceUpdate ()(例如:显示全屏图像的视图控制器)
  2. 在同一视图控制器上覆盖PrefersStatusBarHidden ()
  3. 然而,上面提到的视图控制器嵌入在导航控制器中,导航控制器也嵌入在滑出菜单中。即使使用AddChildViewController()将所有嵌入式视图控制器添加到层次结构中,尝试更新子视图控制器中的状态栏也无效。

    有什么想法吗?


    修改

    Window.RootViewController (Menu)
    |___ ViewControllerA (Navigation Bar)
         |___ ViewControllerB (Actual View controller)
    

    ViewControllerB想要隐藏/显示状态栏的位置

2 个答案:

答案 0 :(得分:7)

ViewControllerA应覆盖childViewControllerForStatusBarHidden并返回ViewControllerB。

- (UIViewController *)childViewControllerForStatusBarHidden {
    return _viewControllerB;
}

答案 1 :(得分:1)

它似乎并不完全是您尝试做的事情。如果您只想在所有子视图控件中隐藏状态栏,则可以设置新的plist属性UIViewControllerBasedStatusBarAppearance

  

...如果您希望退出此行为并设置状态栏   样式通过使用UIApplication statusBarStyle方法,添加   UIViewControllerBasedStatusBar应用程序的Info.plist的外观键   文件,并给它值NO。

源:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uid/TP40013174-CH8-SW1

源代码是BTW,它是对iOS7中处理UINavigationBarUIStatusBar的各种信息的一个很好的参考。

相关问题