【问题标题】:Status bar won't hide if view controller is presented如果显示视图控制器,状态栏不会隐藏
【发布时间】:2017-05-19 21:51:12
【问题描述】:

我的项目中有多个故事板。我在一个情节提要中有一个主页视图控制器,并且我在一个单独的情节提要中的导航控制器中嵌入了一个设置视图控制器。现在,当我从主页视图控制器展示设置视图控制器导航控制器时,状态栏不会隐藏。但是,当我将设置视图控制器故事板设置为 info.plist 中的主故事板文件库并且设置视图控制器导航控制器是呈现的第一个视图时,状态栏将隐藏。我正在使用下面的代码来隐藏状态栏。当状态视图控制器由另一个故事板视图控制器呈现而不是被设置为第一个视图控制器时,有人可以告诉我如何隐藏状态栏。这是我用来隐藏状态栏的代码,

override var prefersStatusBarHidden: Bool {  
      return true  
} 

【问题讨论】:

  • 你是否在 info.plist 中将 UIViewControllerBasedStatusBarAppearance 设置为 true
  • 我做了,但没用
  • 这是否涵盖了您的问题stackoverflow.com/questions/23615647/…
  • 我添加了这个 vc.modalPresentationCapturesStatusBarAppearance = true,但它也不起作用
  • 状态栏还在显示

标签: ios iphone swift xcode swift3


【解决方案1】:

您可以在条件中隐藏状态栏。您需要在状态栏上添加另一个窗口对象。

let stautsBarWindow = UIWindow(frame: UIScreen.main.bounds)
stautsBarWindow.backgroundColor = UIColor.clear
//Instead of Presenting just assign your viewController in below line it will hide your statusBar as well.
stautsBarWindow.rootViewController = yourSideMenuViewController
stautsBarWindow.windowLevel = UIWindowLevelStatusBar
stautsBarWindow.isHidden = false

【讨论】:

  • 我把它放在哪个视图控制器中。导航控制器或主页视图控制器中的那个
  • 您展示的 ViewController。而不是只给出下面的 viewControllers 对象。
  • 所以我不展示导航控制器。
  • 这就是你的解决方案
  • 想通了。谢谢
猜你喜欢
  • 2017-11-14
  • 2013-09-25
  • 2014-02-21
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多