设置系统状态栏样式分析
2016-05-25 14:02
435 查看
一、设置样式的方法
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];
}
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];
}
相关文章推荐
- 用css3做标签
- 针对css3特性浏览器兼容 封装less
- CSS写大叉和红心
- CSS border实现各个方向等腰直角三角
- css3,background-color:背景缩放
- CSS3,背景透明
- CSS3的内径剪切问题(背景边框是虚线)
- 纯css三级导航
- css3的背景坐标
- 用css3写一个iPhone手机案例
- 【前端开发】CSS中的优先级
- ActionBar样式解析
- CSS选择器的权重与优先规则
- CSS3颜色特征温故
- pyc php js echarts css 数据挖掘感悟 2016.05.24回顾
- css3设置高斯模糊
- 在css中最常用的长度单位
- Animate CSS
- 改变状态栏样式
- 美化加载失败的图片(Stying broken images)