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

Hide status bar even when an alert is presented

我正在使用

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

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

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

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

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

其他一切都保持不变。

斯威夫特3:

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

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

把这个方法写在这个class

override func prefersStatusBarHidden() -> Bool {
return true
}

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

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)

    }

请勾选这个link进行测试:

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

modalPresentationCapturesStatusBarAppearance 设置为 false。尝试将其设置为 true 以用于您尝试创建的 UIAlertController

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

Swift 4

extension UIAlertController {
    open override var prefersStatusBarHidden: Bool {
        return true
    }
}