【问题标题】:iOS 7 - Hide status bar on a child view controlleriOS 7 - 在子视图控制器上隐藏状态栏
【发布时间】:2013-09-21 15:50:30
【问题描述】:

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 () 覆盖是要走的路。

标签: ios uiviewcontroller xamarin.ios ios7 statusbar


【解决方案1】:

ViewControllerA 应该覆盖 childViewControllerForStatusBarHidden 并返回 ViewControllerB。

- (UIViewController *)childViewControllerForStatusBarHidden {
    return _viewControllerB;
}

【讨论】:

    【解决方案2】:

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

    ... 如果您希望退出此行为并设置状态栏 通过使用 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中UINavigationBarUIStatusBar的处理相关的各种信息。

    【讨论】:

    • 链接已损坏!
    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多