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

新年快乐!

我想在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后隐藏状态栏。

感谢您的关注和时间!

可以使用UIImagePickerController的以下扩展名永久隐藏状态栏:

 extension UIImagePickerController { open override var childViewControllerForStatusBarHidden: UIViewController? { return nil } open override var prefersStatusBarHidden: Bool { return true } } 

这适用于iOS 10上的Swift 3。

您正在添加UINavigationControllerDelegate的委托方法方法,如下所示。

 class PersonalInfoVC: UIViewController, UIImagePickerControllerDelegate , UINavigationControllerDelegate{ 

添加委托并隐藏其中的状态栏。

 func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool){ UIApplication.shared.isStatusBarHidden = true }