iOS 9 UIImagePickerController statusBar白色

时间:2015-11-04 15:02:49

标签: ios uiimagepickercontroller ios9 statusbar

目标屏幕截图需要

首先,我已阅读这些链接

所有链接都使用UIApplication

的API
- setStatusBarStyle:animated:
- setStatusBarHidden:withAnimation:

但是,这些API在iOS 9中已弃用。

那么,如何在iOS 9中获得lightContent statusBar?

3 个答案:

答案 0 :(得分:8)

我弄清楚了,只是发表我的回答。 接受任何更好的答案

  1. View controller-based status bar appearance设置为YES,或者只删除info.plist中的此键
  2. 创建UIImagePickerController

    的子类
    @interface BaseImagePickerController : UIImagePickerController
    
    @end
    
    
    @implementation BaseImagePickerController
    -(UIStatusBarStyle)preferredStatusBarStyle{
        return UIStatusBarStyleLightContent; 
    }
    @end
    
  3. 使用此子类

    self.imagePikerViewController = [[BaseImagePickerController alloc] init];
    

答案 1 :(得分:1)

以下是在Swift中如何做到这一点:

class BaseImagePickerController {
    func preferredStatusBarStyle() -> UIStatusBarStyle {
        return UIStatusBarStyleLightContent
    }
}

初始化它:

self.imagePikerViewController = BaseImagePickerController()

似乎已弃用statusBarStyle,但UIStatusBarStyle不是。

enter image description here

您也可以通过以下方式更改一个视图控制器的颜色:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}

或者在AppDelegate文件的didFinishLaunchingWithOptions中,您可以使用以下内容在整个应用中更改它:

UIApplication.sharedApplication().statusBarStyle = .LightContent

答案 2 :(得分:1)

您可以在UINavigationController上使用UIImagePickerController的子类,并覆盖preferredStatusBarStyle(),而不是子类化UIImagePickerController。这消除了这种情况下的所有问题。

extension UINavigationController{

override public func preferredStatusBarStyle() -> UIStatusBarStyle {

    return .LightContent
}

}