我想在iOS 10.2上调用UIImagePickerController后隐藏状态栏。 你知道已经有几个问题有一些答案,但我担心这些答案对Swift 3.0不起作用。
建议的答案是:
所以我试过了:
extension UINavigationController{
open override var prefersStatusBarHidden: Bool{
return true
}
}
所以我试过了:
extension UIImagePickerController{
open override var prefersStatusBarHidden: Bool{
return true
}
}
所以我试过了:
class MyImagePickerController: UIImagePickerController{
override var prefersStatusBarHidden: Bool{
return true
}
}
但不幸的是,上述解决方案似乎都不适合我。 我喜欢精通Swift 3.0的iOS开发人员,让我知道如何在调用UIImagePickerController后隐藏状态栏。
感谢您的兴趣和时间!
答案 0 :(得分:11)
状态栏可以永久隐藏,其扩展名为UIImagePickerController
:
extension UIImagePickerController {
open override var childViewControllerForStatusBarHidden: UIViewController? {
return nil
}
open override var prefersStatusBarHidden: Bool {
return true
}
}
这适用于iOS 10上的Swift 3。
答案 1 :(得分:1)
您正在添加UINavigationControllerDelegate
的委托方法方法,如下所示。
class PersonalInfoVC: UIViewController, UIImagePickerControllerDelegate , UINavigationControllerDelegate{
添加委托并隐藏其中的状态栏。
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool){
UIApplication.shared.isStatusBarHidden = true
}
答案 2 :(得分:1)
当显示视图控制器UIImagePickerController swift 4 +
时,状态栏可以隐藏并显示picker.dismiss(animated: true, completion: {
if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
statusBar.isHidden = true
}
})
picker.dismiss(animated: true, completion: {
if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
statusBar.isHidden = false
}
})
答案 3 :(得分:0)
在iOS 13上,这些答案都不对我有用。在展示图像选择器之前,我必须在展示视图控制器上设置此标志:
viewController.modalPresentationCapturesStatusBarAppearance = YES;
[viewController presentViewController:picker animated:YES completion:nil];