我正在使用
隐藏我在特定viewController
上的状态栏
override func prefersStatusBarHidden() -> Bool {
return true
}
在我在屏幕上显示警报之前,它工作得非常好。当出现警报时,状态栏再次出现,我不想要。当警报被取消时,状态栏会再次隐藏。
答案 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)
override func prefersStatusBarHidden() -> Bool {
return true
}
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)
}
请检查此链接以进行测试:
答案 4 :(得分:0)
modalPresentationCapturesStatusBarAppearance
设置为false
。尝试将其true
设置为您要创建的UIAlertController
。
答案 5 :(得分:0)
只需编写扩展名,不要创建新类。
Swift 4
extension UIAlertController {
open override var prefersStatusBarHidden: Bool {
return true
}
}