iOS 9 UIImagePickerController statusBar 白色
iOS 9 UIImagePickerController statusBar white
目标截图想要
首先,我已经阅读了那些link
- UIImagePickerController breaks status bar appearance
- How to hide status bar in UIImagepickercontroller?
- How to make UIImagePickerController StatusBar lightContent style?
所有 link 都使用 UIApplication
的 API
- setStatusBarStyle:animated:
- setStatusBarHidden:withAnimation:
但是,那些 API 在 iOS 9 中已弃用。
那么,如何在 iOS 9 中获取 lightContent statusBar?
我想出来了,只是post我的回答。 接受任何更好的答案
- 将
View controller-based status bar appearance
设置为YES,或者只删除info.plist 中的此项
创建 UIImagePickerController
的子类
@interface BaseImagePickerController : UIImagePickerController
@end
@implementation BaseImagePickerController
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
@end
使用这个子类
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
}
}
目标截图想要
首先,我已经阅读了那些link
- UIImagePickerController breaks status bar appearance
- How to hide status bar in UIImagepickercontroller?
- How to make UIImagePickerController StatusBar lightContent style?
所有 link 都使用 UIApplication
- setStatusBarStyle:animated:
- setStatusBarHidden:withAnimation:
但是,那些 API 在 iOS 9 中已弃用。
那么,如何在 iOS 9 中获取 lightContent statusBar?
我想出来了,只是post我的回答。 接受任何更好的答案
- 将
View controller-based status bar appearance
设置为YES,或者只删除info.plist 中的此项
创建
的子类UIImagePickerController
@interface BaseImagePickerController : UIImagePickerController @end @implementation BaseImagePickerController -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } @end
使用这个子类
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
}
}