2015-11-04 91 views
0

目标截图要的iOS 9的UIImagePickerController的状态栏。白色

首先,我已阅读这些链接

所有的链接使用的iOS 9

已被弃用那么,如何让lightContent的状态栏。在IOS 9 UIApplication

- setStatusBarStyle:animated: 
- setStatusBarHidden:withAnimation: 

但是,这些API的API?

回答

7

我想通了,只是发布我的答案。 接受任何更好的答案

  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]; 
    
+0

不敢相信这是苹果将打算为你做的方式,但它是我发现的唯一方式工作。 – Lewis42

1

这里是如何做到这一点在斯威夫特:

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 
1

而不是UIImagePickerController的子类,你可以在UINavigationController上使用UIImagePickerContro的扩展ller是override的一个子类,并且覆盖preferredStatusBarStyle()。这消除了在这种情况下的所有问题。

extension UINavigationController{ 

override public func preferredStatusBarStyle() -> UIStatusBarStyle { 

    return .LightContent 
} 

}