iOS 9 UIImagePickerController statusBar 白色

iOS 9 UIImagePickerController statusBar white

目标截图想要

首先,我已经阅读了那些link

所有 link 都使用 UIApplication

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

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

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

我想出来了,只是post我的回答。 接受任何更好的答案

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

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

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

以下是 Swift 中的操作方法:

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

初始化它:

self.imagePikerViewController = BaseImagePickerController()

似乎 statusBarStyle 已被弃用,但 UIStatusBarStyle 未被弃用。

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

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

或者在 AppDelegate 文件的 didFinishLaunchingWithOptions 中,您可以在整个应用程序中更改它:

UIApplication.sharedApplication().statusBarStyle = .LightContent

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

extension UINavigationController{

override public func preferredStatusBarStyle() -> UIStatusBarStyle {

    return .LightContent
}

}