文档章节

iOS开发之顶部状态栏statusBar颜色变化小结

法斗斗
 法斗斗
发布于 2017/01/10 10:53
字数 989
阅读 30
收藏 0

 

iOS开发之顶部状态栏statusBar颜色变化小结

 

在网上搜了一堆结果,没有一个全面总结的,太零碎,不符合需求,现在就整理最符合自己的小结。

1.单个视图View没有导航控制器包装的情况下

  • 默认情况下,启动状态栏和进入程序后的状态栏都是默认的颜色-黑色,如下图:

    默认情况.gif

1.只设置启动状态栏颜色改变(白色),而视图中状态栏不变化(默认黑色),做如下的设置即可,两种方式不管先设置哪一个,另一个都会相应的变化,如下图:

在General里面做的修改

Info.plist文件中生成的相应配置

只有启动栏颜色改变.gif

2.设置启动状态栏颜色改变(白色),视图中的状态栏也变成白色(保持上面的设置),有两种设置方式:

a.在Info.plist里面添加一行View controller-based status bar appearance = NO 即可,如下图:

在Info.plist里面设置

b.在视图控制器中添加代码,如下图:

在.m文件中添加代码

效果如下图:

启动和视图一起改变.gif

3.设置视图中状态栏的颜色为白色,启动程序时的状态栏为默认颜色(黑色),没有做1.中的任何设置情况下,在控制器.m文件中添加如下代码(即2.->b.图所示):

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

效果如下图:

只改变视图状态栏颜色.gif

2.视图作为导航控制器的根控制器的情况下

  • 在这种情况下,启动画面和视图的状态栏都是默认颜色(黑色),即使是在AppDelegate.m文件的didFinishLaunching的方法中添加下面代码:
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    并且在视图控制器中添加如1.->2.->b.的图中的代码也是没有效果的。

各种无效果.gif

1.设置启动画面的状态栏为白色,视图中的状态栏为默认(黑色),如1.->1.中的设置即可,效果如下图:

导航栏包装的情况-1.gif


此时,如果想要视图的状态栏变为白色,不管是在AppDelegate.m文件中添加
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;同时在视图控制器中添加1.->2.->b.的图中的代码,都是然并卵,已测试。

2.设置启动画面和视图中的状态栏颜色都为白色(保持2.->1.中的设置),方式同样有两种:

a.在Info.plist里面添加一行View controller-based status bar appearance = NO 即可,如下图:

在Info.plist里面设置

b.此时如果单单在视图控制器.m文件中添加如下代码是不够的,

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

同时需要在导航控制器.m文件中添加下面的代码才能达到效果(careful)

- (UIViewController *)childViewControllerForStatusBarStyle{
    return self.topViewController;
}

如下图:

导航栏包装的情况-2.gif

2.只设置视图控制器状态栏颜色为白色,启动画面的状态栏为默认(黑色),把Info.plist文件中的 Status bar style = UIStatusBarStyleLightContent设置去掉,保持2.->2.->b.中的代码设置即可,效果如下图:

导航栏包装的情况-3.gif

3.小结

1.在AppDelegate.m文件中添加如下代码,没有一点儿毛用,
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
/[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];(被弃用)
2.目前所测试均为系统样式,不包含自定义的情况。
3.以上如有疏漏或错误的地方,忘及时沟通交流,尽快更正,不能传播误导信息。

4.补充

  • 要想在工程中启动和视图中的状态栏都是白色,用下面的方法简单配置下就行。
    1.设置Status Bar Style为Light.

    Info.plist文件中生成的相应配置

2.在plist文件中添加 View controller-based status bar appearance = NO。

在Info.plist里面设置

本文转载自:

法斗斗
粉丝 22
博文 368
码字总数 17774
作品 0
杨浦
程序员
私信 提问
React Native 中的状态栏

在实际项目中,我们常常需要根据页面的不同去修改状态栏的表现。例如:页面头部图片延伸到状态栏下并且状态栏透明;状态栏的颜色和标题栏的颜色相同;状态栏内容颜色的深浅变化。 在此之前,...

hezhii
01/24
0
0
ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏

作者:shede333 主页:http://my.oschina.net/shede333 && http://blog.sina.com.cn/u/1509658847 版权声明:原创文章,版权声明:自由转载-非商用-非衍生-保持署名 [Creative Commons BY-N...

shede333
2014/08/20
0
15
使用 Interface Builder 兼容 iOS6 和iOS7

当你在更新你的App到iOS 7的平台时遇到最大的挑战之一就是确保不要遗忘那些还在使用iOS 6平台的用户,在此我们提供一些建议使你的App应用在iOS 6和iOS 7上同时保留视觉吸引力和技术功能. 此图...

isaced
2014/01/15
13.3K
12
定制iOS 7中的导航栏和状态栏

由于种种原因,申请了一个开源中国的帐号,也许会由于我的不耐心,不会亲自去一步步的写博文,但准备把自己看到的好的,都转载过来,就当时资源的存储,也算是一种推广吧。 iOS 7 教程:定制...

谁家的阿毛
2013/11/21
0
0
移动端iOS PWA存在的“坑”

最近,我在开发PWA时,发现iOS端存在诡异的问题。 一、症状 竖屏时,内容显示正常,状态栏为显示状态 第一次横屏(-90°或90°)----- 内容显示正常,状态栏被隐藏 从90°旋转至-90°,或从-...

ceshu
2018/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

UserInputControls用户输入控制

enum UserInputControls { kGovernedByOrthoMode = 0x0001,//正交模式管理 kNullResponseAccepted = 0x0002,//允许输入空 kDontEchoCancelForCtrlC = 0x0004,//ctrl C 模式不能重复......

一个小妞
14分钟前
0
0
分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成...

群星纪元
15分钟前
0
0
Kanban VS Scrum:哪个是最好的敏捷项目管理框架

“我们使用敏捷开发。”在与软件开发团队交流时,你会听到很多这样的说法。根据统计,2018年全球约有90%的开发人员在使用敏捷开发。Choerodon猪齿鱼团队也是其中之一。 但是,敏捷并不统一。...

Choerodon
20分钟前
0
0
vue select 慢一步

我在使用vue的select的时候,@change事件里面,写一个axios拿到数据,然后修改某个变量,按理修改变量会立即呈现在页面上面,但实际情况是,值是变更了,但是页面上的效果慢了一步,非常奇怪...

朝如青丝暮成雪
24分钟前
0
0
分布式架构 核心知识体系

1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分...

小刀爱编程
27分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部