jrc*_*jrc 4 uinavigationcontroller uisplitviewcontroller ios
我有一个标准的主从应用程序,我正在尝试有条件地显示/隐藏状态栏。
prefersStatusBarHidden()
在 MasterViewController 中覆盖什么都不做。它甚至永远不会被调用。
override func prefersStatusBarHidden() -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
UIViewControllerBasedStatusBarAppearance
Info.plist 中的设置没有帮助,大概是因为YES
已经是默认值。打电话setNeedsStatusBarAppearanceUpdate()
也没有用。
我的目标是 iOS 9。
有一个更清洁的解决方案。有一个函数childViewControllerForStatusBarHidden
专门设计用于返回应将首选状态栏隐藏转发到的子视图控制器。
因此,最好覆盖它。它看起来像这样:
override func childViewControllerForStatusBarHidden() -> UIViewController? {
if var topViewController = self.viewControllers.first {
if let navigationController = topViewController as? UINavigationController {
topViewController = navigationController.topViewController!
}
return topViewController
}
return super.childViewControllerForStatusBarHidden()
}
Run Code Online (Sandbox Code Playgroud)
也许你甚至可以省略跟随。NavigationViewController 本身有 childViewControllerForStatusBarHidden(),它将把它发送到子视图控制器。
if let navigationController = topViewController as? UINavigationController {
topViewController = navigationController.topViewController!
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4337 次 |
最近记录: |