即使出现警报也隐藏状态栏
Posted
技术标签:
【中文标题】即使出现警报也隐藏状态栏【英文标题】:Hide status bar even when an alert is presented 【发布时间】:2017-02-04 16:45:43 【问题描述】:我正在使用
将状态栏隐藏在特定的viewController
上
override func prefersStatusBarHidden() -> Bool
return true
在我在屏幕上显示警报之前,它工作得非常好。当警报出现时,状态栏再次出现,这是我不想要的。解除警报时,状态栏再次隐藏。
【问题讨论】:
你的 alets 用什么?UIAlertView
或 UIAlertController
?
我正在使用 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 状态栏仍然出现!以上是关于即使出现警报也隐藏状态栏的主要内容,如果未能解决你的问题,请参考以下文章