【问题标题】:Hiding Status Bar of UIPageViewController in Swift 3.0 iOS在 Swift 3.0 iOS 中隐藏 UIPageViewController 的状态栏
【发布时间】:2016-11-21 12:13:33
【问题描述】:

请在将其标记为重复之前阅读该问题。

我知道有很多关于iOSView Controller隐藏状态栏的问题。但他们都没有解决我的问题。

我正在使用Swift - 3.0 这是我的场景:

  1. 我可以使用 prefersStatusBarHidden 计算属性在单个 UIViewController 上隐藏状态栏。所以没问题。

  2. 我有一个UIPageViewController(DetailPageViewController),其中包含几个UIViewControllers(DetailViewController) 作为子控制器。在每个子视图控制器中,我都有另一个UIPageViewController(PhotosPageViewController),它还包含多个UIViewControllers(PhotoViewController)。即,

DetailPageViewController --> 多个DetailViewController

每个 DetailViewController --> PhotosPageViewController --> 多个 PhotoViewController

所以,问题是我无法隐藏所有 4 个控制器的状态栏 - DetailPageViewController, DetailViewController, PhotosPageViewController, PhotoViewController

【问题讨论】:

  • 我不确定。但是,你应该看看var childViewControllerForStatusBarHidden: UIViewController? { get }来实现这个功能。更多信息developer.apple.com/reference/uikit/uiviewcontroller/…
  • 我已经尝试过了..但没有运气。
  • 我想知道你的项目中有多少 VC 有 statusBar 或只有 mainVC?

标签: ios swift uiviewcontroller uipageviewcontroller uistatusbar


【解决方案1】:

您可以从情节提要中为您初始化的每个视图控制器隐藏状态栏,只需为该母校选择 none

或者您可以创建一个 BaseViewController 并以编程方式执行它并从 BaseViewController 子类化您的控制器

BaseViewController: UIViewController {
    override var prefersStatusBarHidden: Bool {
       return true
    }
}

DetailViewController: BaseViewController {
   // your codes goes here
}

请注意,如果您使用此方法,它仅适用于从 UIViewController 继承而不是 UITableViewController 等的控制器,在这种情况下,如果您的控制器很少,您应该为它们创建这样的文件。

希望这会有所帮助

【讨论】: