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

时间:2016-09-27 07:02:54

标签: ios swift statusbar uialertcontroller

我正在使用

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

在我在屏幕上显示警报之前,它工作得非常好。当出现警报时,状态栏再次出现,我不想要。当警报被取消时,状态栏会再次隐藏。

6 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

其他一切都保持不变。

Swift3:

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

答案 2 :(得分:1)

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

在此课程中编写此方法

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

只需编写扩展名,不要创建新类。

Swift 4

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