美文网首页
UIImagePickerController状态栏颜色

UIImagePickerController状态栏颜色

作者: 烟影很美 | 来源:发表于2016-12-12 14:39 被阅读76次

UIViewControllerBasedStatusBarAppearance = YES的时候
使用UIImagePickerController的时候, 如何修改状态栏的颜色?

1 . 所有的模态视图都可以通过分类覆盖preferredStatusBarStyle方法来修改视图状态栏样式(比如UIAlertController)

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

2 . 因为UIImagePickerController继承UINavigationController
所以需要覆盖childViewControllerForStatusBarStyle方法, 保险起见, 我依旧覆盖了preferredStatusBarStyle方法. 记忆中两个方法都管用
(实际上, 如果childViewControllerForStatusBarStyle的返回值不为空, NavigationController是不会调用preferredStatusBarStyle方法的, 状态栏也会是childViewController中设置的样式, 所以如下写法其实是黑科技...虽然效果一致)

- (UIStatusBarStyle)preferredStatusBarStyle {
    return self.visibleViewController.preferredStatusBarStyle;
}

- (UIViewController *)childViewControllerForStatusBarStyle {
    UIViewController *viewController = self.visibleViewController;
    return viewController;
}

到此为止, 进入相册可以看到状态栏已经是自己期望的样式, 但是退出相册的时候发现状态栏又变成了默认的样式(鬼知道是为什么). 所以还需要完成下面这一步

3 . UIImagePickerController的根视图是PUAlbumListViewController类, 可惜苹果并没有公开这个类, 我只好写了个UIViewController分类, 同样是覆盖preferredStatusBarStyle方法

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

相关文章

网友评论

      本文标题:UIImagePickerController状态栏颜色

      本文链接:https://www.haomeiwen.com/subject/fgpmmttx.html