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

问题描述 投票:4回答:2

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

  1. 在视图控制器上调用SetNeedsStatusBarAppearanceUpdate ()(例如:显示全屏图像的视图控制器)
  2. 在同一视图控制器上覆盖PrefersStatusBarHidden ()

然而,上面提到的视图控制器嵌入在导航控制器中,导航控制器也嵌入在滑出菜单中。即使使用AddChildViewController()将所有嵌入式视图控制器添加到层次结构中,尝试更新子视图控制器中的状态栏也无效。

有任何想法吗?


编辑

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

ViewControllerB想要隐藏/显示状态栏

ios uiviewcontroller xamarin.ios ios7 statusbar
2个回答
7
投票

ViewControllerA应覆盖childViewControllerForStatusBarHidden并返回ViewControllerB。

- (UIViewController *)childViewControllerForStatusBarHidden {
    return _viewControllerB;
}

1
投票

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

...如果您希望选择不使用此行为并使用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

来源是BTW,非常适合在iOS7中处理与UINavigationBarUIStatusBar相关的各种信息。

© www.soinside.com 2019 - 2024. All rights reserved.