设置系统状态栏样式分析

本文分析了在iOS系统中设置状态栏样式的两种方法,适用于iOS6到iOS9。第一种方法为全局修改,第二种则影响当前控制器。此外,讨论了`View controller-based status bar appearance`这一plist属性,当其为YES时,第二种方法生效,反之第一种生效。同时,`Status bar style`属性用于设定启动时的状态栏样式。在导航控制器中,若`preferredStatusBarStyle`未被调用,文章提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、设置样式的方法

iOS6 -- iOS9 :

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

iOS7 -- iOS9 :

- (UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

iOS7以后以上两种方法都能修改状态栏样式。

注意:第一种方法修改的是全局样式;第二种方法修改的是局部样式(只影响当前控制器状态栏的样式)

二、关于状态栏所必知的plist属性

1.View controller-based status bar appearance  : bool类型。iOS7以后默认 为YES。这个属性决定着设置状态栏样式方法的有效性。如果为YES,则第二种设置样式方法有效,第一种设置样式方法无效;如果为NO,则第一种设置样式方法有效,第二种设置样式方法无效。

2.Status bar style : string类型。就是状态栏的各种样式。 plist的这个属性决定着启动状态栏的样式。

a. 如果View controller-based status bar appearance = YES。那么系统实际上是启动控制器中的代码为:

- (UIStatusBarStyle)preferredStatusBarStyle{

    return UIStatusBarStyleLightContent;

但是此样式方法是局部的,所以只有启动控制器的状态栏是白色的,其他控制器状态栏依然是默认的黑色的。

b. 如果View controller-based status bar appearance = NO。那么系统实际的启动控制器中的代码为:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

而此样式的方法是全局的,因此整个app的状态栏都是白色的。

三、有导航控制器的 VC中使用 preferredStatusBarStyle方法 不被调用的解决办法

在导航VC中这样调用

- (UIStatusBarStyle)preferredStatusBarStyle{
    return [self.topViewController preferredStatusBarStyle];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值