UIImagePickerController状态栏颜色

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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • github上关于iOS的各种开源项目集合(转) UI 下拉刷新 EGOTableViewPullRefresh-...
    其实也没有阅读 7,225评论 1 112
  • 喜欢星空吗?我也是呢! 准备了两天,做了个分步教程~ 喜欢星空的你们也来试试看吧! 先上完成图 一、准备工作 主要...
    田小蜜蜂阅读 72,744评论 6 37
  • 又到周末时光,你那边的天气是否与我一样,是否也沐浴着阳光,享受着秋日下午的静谧;如此美好的时光,又岂能就这样让他消...
    颜淑阅读 4,872评论 44 208
  • 前几个星期读了“销售就是玩转情商”、“关键对话”、“非暴力沟通”等等,主要是人际沟通方面的。我发现,所有的谈话技巧...
    张翀sh阅读 171评论 0 1