调用imagePickerController后隐藏状态栏

时间:2015-02-16 11:54:39

标签: ios swift uiimagepickercontroller statusbar

无论我做什么,当我打开图像选择器时状态栏会不断出现,并且在它被解除后不会消失。我尝试了在本网站上能够阅读的各种快速解决方案,这些解决方案本来可以解决问题,但它根本没有帮助。

这是我的工作。我是选择器控制器的子类:

class MyImagePickerController: UIImagePickerController {

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.setNeedsStatusBarAppearanceUpdate()
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        self.setNavBar()
    }

    override func prefersStatusBarHidden() -> Bool {
        self.setNavBar()
        return true
    }

    override func childViewControllerForStatusBarHidden() -> UIViewController? {
        return nil;
    }

    func setNavBar() -> Void {
        self.setNavBar(65)
    }


    func setNavBar(height: CGFloat) -> Void {
        var frame = self.navigationBar.frame;
        frame.size.height = height;
        self.navigationBar.frame = frame;
    }
}

然后我从IBoutled动作中调用它:

    func chooseImageFromGallery() {
    var image  = MyImagePickerController()
    image.delegate = self
    image.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    image.allowsEditing = false
    self.presentViewController(image, animated: true, completion: nil)


}

当然,我设置隐藏在Plist文件中的栏。问题是在调用选择器控制器时。 请在Swift中回答。

1 个答案:

答案 0 :(得分:3)

使用以下代码执行此操作

import Foundation

extension UIImagePickerController {
    override public func prefersStatusBarHidden() -> Bool {
        return true
    }
}

这是 UIImagePickerController 的扩展(类别),对我有用。