Swift 3.0 - 如何在调用UIImagePickerController后隐藏状态栏?

时间:2017-01-04 04:35:27

标签: ios swift3 uiimagepickercontroller statusbar

新年快乐!

我想在iOS 10.2上调用UIImagePickerController后隐藏状态栏。 你知道已经有几个问题有一些答案,但我担心这些答案对Swift 3.0不起作用。

建议的答案是:

  • 扩展UINavigationController以覆盖preferStatusBarHidden,因为UIImagePickerController是UINavigationController的子类。

所以我试过了:

extension UINavigationController{
    open override var prefersStatusBarHidden: Bool{
        return true
    }
}
  • 扩展UIImagePickerController以覆盖prefersStatusBarHidden。

所以我试过了:

extension UIImagePickerController{
    open override var prefersStatusBarHidden: Bool{
        return true
    }
}
  • 创建并使用UIImagePicker的子类

所以我试过了:

class MyImagePickerController: UIImagePickerController{
    override var prefersStatusBarHidden: Bool{
        return true
    }
}

但不幸的是,上述解决方案似乎都不适合我。 我喜欢精通Swift 3.0的iOS开发人员,让我知道如何在调用UIImagePickerController后隐藏状态栏。

感谢您的兴趣和时间!

4 个答案:

答案 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];

相关问题