Ios 如何在调用UIImagePickerController后隐藏状态栏?
在iOS 10.2上调用UIImagePickerController后,我想隐藏状态栏 有几个问题的答案不适用于Swift 3.0 建议的答案如下:Ios 如何在调用UIImagePickerController后隐藏状态栏?,ios,swift3,uiimagepickercontroller,statusbar,Ios,Swift3,Uiimagepickercontroller,Statusbar,在iOS 10.2上调用UIImagePickerController后,我想隐藏状态栏 有几个问题的答案不适用于Swift 3.0 建议的答案如下: 扩展UINavigationController以覆盖preferStatusBarHidden,因为UIImagePickerController是UINavigationController的子类 所以我试着: extension UINavigationController{ open override var prefersS
- 扩展UINavigationController以覆盖preferStatusBarHidden,因为UIImagePickerController是UINavigationController的子类
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
}
}
- 扩展UIImagePickerController以覆盖prefersStatusBarHidden
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
}
}
- 创建并使用UIImagePicker的子类
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
}
}
上述解决方案对我都不起作用。您正在添加
UINavigationControllerDelegate
的委托方法,如下所示
class PersonalInfoVC: UIViewController, UIImagePickerControllerDelegate , UINavigationControllerDelegate{
添加代理并隐藏其中的状态栏。
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool){
UIApplication.shared.isStatusBarHidden = true
}
状态栏可以通过以下扩展名永久隐藏到
UIImagePickerController
:
extension UIImagePickerController {
open override var childViewControllerForStatusBarHidden: UIViewController? {
return nil
}
open override var prefersStatusBarHidden: Bool {
return true
}
}
这适用于iOS 10上的Swift 3。当显示视图控制器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
}
})
这些答案在iOS 13上对我都不起作用。在演示图像选择器之前,我必须在演示视图控制器上设置此标志:
viewController.modalPresentationCapturesStatusBarAppearance=YES;
[viewController presentViewController:picker动画:是完成:无];
UIApplication.shared.isStatusBarHidden=true已从iOS 9.0中删除。你能更新你的答案吗。