【问题标题】:Swift 3 - how to hide Status Bar when using Over Full ScreenSwift 3 - 使用 Over Full Screen 时如何隐藏状态栏
【发布时间】:2017-03-29 08:59:57
【问题描述】:

我正在开发一个 swift 应用程序,当我在我的模式上使用全屏演示时,我找不到如何隐藏状态栏。

但是,我将这行代码放在我的模态视图控制器中:

override var prefersStatusBarHidden: Bool {
    return true
}

如果我创建一个非模态的转场,或者如果我创建一个模态但不是全屏演示的转场,它就可以工作。

我在网上搜索了如何解决它,我发现有人遇到同样的问题但没有解决方案。

另外,当我使用 Over Full Screen 选项时,我无法更改状态栏的颜色。我不明白为什么?我认为这是相关的。

感谢您的帮助!

【问题讨论】:

  • 尝试将它也放入您的 appDelegate 中。

标签: ios swift modal-dialog segue


【解决方案1】:

要在进行全屏模式时隐藏状态栏,您需要在 viewDidLoad 中进行设置:

override func viewDidLoad() {
    super.viewDidLoad()    
    modalPresentationCapturesStatusBarAppearance = true
}

然后做标准方法隐藏状态栏:

override var prefersStatusBarHidden: Bool {
    return true
}

【讨论】:

  • 对于objective-c 用户,viewDidLoad 部分将是:self.modalPresentationCapturesStatusBarAppearance = YES;
  • modalPresentationCapturesStatusBarAppearance 适合我
【解决方案2】:

我们可以按照您正确的做法从单个视图控制器覆盖preferredStatusBarStyle

除此之外,插入一个名为“查看基于控制器的状态栏外观”的新键,并将 info.plist 中的值设置为 NO。

通过禁用“基于视图控制器的状态栏外观”,您可以使用以下代码设置状态栏样式。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; //objective-c

因此它应该解决“当我使用全屏选项时,我无法更改状态栏的颜色”

【讨论】:

  • 这不适用于我的模式视图控制器。我还有黑色的状态栏
猜你喜欢
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 2016-06-23
  • 1970-01-01
相关资源
最近更新 更多