如何修改UIImagePickerController状态栏颜色

应用场景:Swift4.1和Objective-C混编,Info.plist设置 View controller-based status bar appearance=YES下,系统默认是UIStatusBarStyleDefault

需求:想要设置成UIStatusBarStyleLightContent

一般在需要修改状态栏的控制器设置

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

调用系统相册例外
解决方法一:自定义个类DXUIImagePickerController,继承UIImagePickerController,在自定义类里设置

@interface DXUIImagePickerController ()

@end

@implementation DXUIImagePickerController

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
@end

解决方法二:给UIImagePickerController扩展分类,在分类里设置

extension UIImagePickerController {
    // 无效
   open override var prefersStatusBarHidden: Bool{
        return true
    }
     // 无效
    override open var preferredStatusBarStyle: UIStatusBarStyle{
        return .lightContent
    }
}

正确解法1

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate      = self;
picker.sourceType    = type;
picker.allowsEditing = YES;
// iOS10和iOS11上,状态栏颜色是白色的,如果不设置状态栏就是黑色的(亲测)
// picker.modalPresentationStyle UIModalPresentationOverCurrentContext;
picker.navigationBar.barTintColor self.navigationController.navigationBar.barTintColor;
[self presentViewController:picker animated:YES completion:^{
     [self setNeedsStatusBarAppearanceUpdate];
 }];

这样设置也是无效的

picker.modalPresentationStyle = UIModalPresentationCurrentContext;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容