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

4

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想要隐藏/显示状态栏


似乎ChildViewControllerForStatusBarHidden()重载是正确的方法。 - Eduardo Coelho
2个回答

7

ViewControllerA 应该重写 childViewControllerForStatusBarHidden 方法并返回 ViewControllerB。

- (UIViewController *)childViewControllerForStatusBarHidden {
    return _viewControllerB;
}

1

不完全清楚您的意图。如果您只想在所有子视图控制器中隐藏状态栏,可以设置新的plist属性UIViewControllerBasedStatusBarAppearance

... 如果您希望退出此行为并使用UIApplication statusBarStyle方法设置状态栏样式,请将UIViewControllerBasedStatusBarAppearance键添加到应用程序的Info.plist文件中,并将其值设置为NO。

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

这个源是关于在iOS7中处理 UINavigationBarUIStatusBar 的各种信息的一个非常好的参考资料。

链接已损坏! - Karsten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接