如果显示视图控制器,状态栏不会隐藏

Posted

技术标签:

【中文标题】如果显示视图控制器,状态栏不会隐藏【英文标题】: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 我做了,但没用 这是否涵盖了您的问题***.com/questions/23615647/… 我添加了这个 vc.modalPresentationCapturesStatusBarAppearance = true,但它也不起作用 状态栏还在显示 【参考方案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 对象。 所以我不展示导航控制器。 这就是你的解决方案 想通了。谢谢

以上是关于如果显示视图控制器,状态栏不会隐藏的主要内容,如果未能解决你的问题,请参考以下文章

隐藏/显示 PageViewController 中特定视图控制器的状态栏 [关闭]

iPhone:在多视图控制器中隐藏/显示状态栏的问题

在所有视图控制器中隐藏状态栏 - IOS [重复]

状态栏重新出现时视图控制器不会自动调整大小

Swift iOS - 即使我隐藏它,导航栏也不会保持隐藏状态

同时状态栏隐藏和视图转换