prefersStatusBarHidden不会被调用
我有一个标准的主要细节的应用程序,我试图有条件地显示/隐藏状态栏。
在MasterViewController中覆盖prefersStatusBarHidden()
不会执行任何操作。 它甚至从来没有被调用。
override func prefersStatusBarHidden() -> Bool { return true }
在Info.plist中设置UIViewControllerBasedStatusBarAppearance
没有帮助,可能是因为YES
已经是默认值了。 调用setNeedsStatusBarAppearanceUpdate()
也没有帮助。
我的目标是iOS 9。
有一点清洁的解决scheme。 有一个函数childViewControllerForStatusBarHidden
是专门devise来返回prefersStatusBarHidden应该转发到的子视图控制器。
所以,重写它会更好。 它看起来像这样:
override func childViewControllerForStatusBarHidden() -> UIViewController? { if var topViewController = self.viewControllers.first { if let navigationController = topViewController as? UINavigationController { topViewController = navigationController.topViewController! } return topViewController } return super.childViewControllerForStatusBarHidden() }
也许你甚至可以忽略下面的内容。 NavigationViewController有自己的childViewControllerForStatusBarHidden(),将它发送给子视图控制器。
if let navigationController = topViewController as? UINavigationController { topViewController = navigationController.topViewController! }
答案是覆盖从窗口的根视图控制器开始的prefersStatusBarHidden()
。 在主 – 细节应用程序中,这需要UISplitViewController
以将消息转发到视图控制器层次结构中。
像这样的东西:
override func prefersStatusBarHidden() -> Bool { if var topViewController = self.viewControllers.first { if let navigationController = topViewController as? UINavigationController { topViewController = navigationController.topViewController! } return topViewController.prefersStatusBarHidden() } return super.prefersStatusBarHidden() }
- 如何将parameter passing给导航控制器内的弹窗视图控制器
- 在ios编程的iMessage发送图片+文本?
- 如何像UITableView的tableHeaderView一样在UICollectionView中添加HeaderView
- applicationWillTerminate不会强制退出iOS应用程序的调用
- 如何在tableview swift中显示Checkmark?
- TinyExtension:简化的空闭包
- 在Objective-C XCode中将常量链接到pch时出错
- iOS9不会从安全页面(SSL / HTTPS)加载不安全的资源
- iOS:将Facebook Likebutton添加到本机iPhone应用程序