iOS7之后 改变状态栏颜色方法

1 篇文章 0 订阅

iOS7之后 改变状态栏颜色方法

本文旨在针对ViewController单个设定状态栏的颜色,全程可以自定义设置。

  • 默认的黑色 UIStatusBarStyleDefault

  • 白色 UIStatusBarStyleLightContent

iOS7之后修改状态可以通过两种方式:

1.

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]

2.

- (UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

下面我介绍两种方式具体的使用方法

  • 第一种方法,通过 [UIApplication sharedApplication] 设置

在iOS7之后,系统将状态栏交给Controller管理,如果要使用这种方法,需要配置.plist文件,添加一个key

View controller-based status bar appearance

控制器的状态栏  由控制器管理

并且设置对应的Value为 NO

代表的意思就是 状态栏不是由控制器来管理,而是由 UIApplication 来管理。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]

这样你在代码中使用这个方法就会起到作用了。

当然了这个key默认为YES,也就是说默认是控制器来管理的

这里着重介绍的第二种方法:

  • 全局全程自定义设置当前控制器ViewController的状态栏颜色

一般来说iOS普遍的结构是使用 UINavigationController 来搭建整体的框架结构,这样的话,在某个单独的UIViewController 重写

- (UIStatusBarStyle)preferredStatusBarStyle;

当前控制器的这个方法,并不会执行。

执行的实际上还是当前控制器对应的UINavigationController的状态栏的颜色。

解决方案就是,在UIViewController对应的UINavigationController重写

- (UIStatusBarStyle)preferredStatusBarStyle;

也就是说在自定义的UINavigationController的子类,在子类中重写这个方法:

- (UIStatusBarStyle)preferredStatusBarStyle{
 //获取当前UINavigationController最上面的UIViewController,也就是说获取最当前的控制器
    UIViewController *topVC = self.topViewController;

/*返回的是当前控制器UIViewController对应的- (UIStatusBarStyle)preferredStatusBarStyle;
*/
    return [topVC preferredStatusBarStyle];
}

这样,通过这个方法,在显示状态栏的时候,就会显示所有控制器对应 - (UIStatusBarStyle)preferredStatusBarStyle; 这个方法返回的状态栏的类型了。

这时候,我们只需要在需要改变状态栏颜色的控制器,重写这个方法,就会调对应的状态栏颜色了

- (UIStatusBarStyle)preferredStatusBarStyle{
    return  UIStatusBarStyleLightContent;
}

OK,至此为止,你就可以任性的自定义自己所有控制器,对应的状态栏颜色了。

当然,为了更好的去管理所有的控制器,写一个UIViewController的子类,然后你所有的控制器 继承自这个子类,在这个子类里重写

- (UIStatusBarStyle)preferredStatusBarStyle{
    return  UIStatusBarStyleLightContent;
}

实现想怎么改,就怎么改。

这么好的文章,一定要 顶!顶!顶!顶!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值