即使出现警报也隐藏状态栏

Posted

技术标签:

【中文标题】即使出现警报也隐藏状态栏【英文标题】:Hide status bar even when an alert is presented 【发布时间】:2017-02-04 16:45:43 【问题描述】:

我正在使用

将状态栏隐藏在特定的 viewController
override func prefersStatusBarHidden() -> Bool 
    return true

在我在屏幕上显示警报之前,它工作得非常好。当警报出现时,状态栏再次出现,这是我不想要的。解除警报时,状态栏再次隐藏。

【问题讨论】:

你的 alets 用什么? UIAlertViewUIAlertController? 我正在使用 UiAlertController 请检查 github 链接以测试样本.. 【参考方案1】:

由于UIAlertController 现在是成熟的UIViewController,您应该能够将其子类化并将相同的方法添加到新的子类中。然后实例化您的子类,而不是简单的 UIAlertController

未经测试,但这应该可以解决问题。

【讨论】:

【参考方案2】:

这不是最漂亮的解决方案,但由于 UIAlertController 现在只是 UIViewController 的子类,您可以将其子类化并覆盖 prefersStatusBarHidden,就像您对其他视图控制器所做的那样。

其他一切都保持不变。

Swift3:

final class MYAlertController : UIAlertController 
    override var prefersStatusBarHidden: Bool 
        get 
            return true
        
    

【讨论】:

【参考方案3】:

创建一个名为 CustomAlertController 的类并从 UIAlertController 继承它

在这个类中写这个方法

override func prefersStatusBarHidden() -> Bool 
return true

每当您创建警报时,请创建一个 CustomAlertController 实例,然后使用它。

【讨论】:

【参考方案4】:

swift 2 版本

override func prefersStatusBarHidden() -> Bool 
    return true

swift 3 版本

override var prefersStatusBarHidden: Bool 
    return true

显示警报:

let alertController = UIAlertController(title: "Error", message: "No internet connection", preferredStyle: .alert)

        let OKAction = UIAlertAction(title: "OK", style: .default)  (action:UIAlertAction) in
            print("OK button pressed");
        

        alertController.addAction(OKAction)
        self.present(alertController, animated: true, completion:nil)

    

请查看此链接进行测试:

https://github.com/k-sathireddy/AlertControllerSample

【讨论】:

我已经提到我在我的 viewController 中使用了这个方法。你给我同样的方法没有解释? 我应该添加一个链接来测试示例项目吗?【参考方案5】:

只写一个扩展,不要创建新类。

斯威夫特 4

extension UIAlertController 
    open override var prefersStatusBarHidden: Bool 
        return true
    

【讨论】:

【参考方案6】:

modalPresentationCapturesStatusBarAppearance 设置为 false。尝试将其设置为 true 以表示您正在尝试创建的 UIAlertController

【讨论】:

即使设置 modalPresentationCapturesStatusBarAppearance 为 true 状态栏仍然出现!

以上是关于即使出现警报也隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章

出现 TouchID 警报时如何删除状态栏?

iOS 8 - 切换控件后,即使在纵向模式下,旋转也会使状态栏消失

添加新 UIWindow 时以编程方式隐藏状态栏?

iphone播放视频时隐藏状态栏

ipad浏览器全屏隐藏状态栏

防止屏幕锁定后隐藏的状态栏重新出现