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() }
- Swift无法识别的select器发送到实例错误
- 我们新的视频消息传递实验的特殊设计说明了
- 应用程序:didReceiveLocalNotification永远不会调用ios 8
- MFMailComposeViewController视图不会第二次解除
- 如何在ios7中使用ALAssetLibrary获取所有照片?
- 如何从Chrome for iOS发送消息给自定义的Google Cast Receiver?
- iOS 8.0及更高版本(@ rpath / libswift_stdlib_core.dylib)仅支持可重定位的dylib(例如embedded式框架)
- iOS Facebookgraphics请求多个图片大小
- 在不知道当前视图控制器的情况下呈现模态控制器?