各位大神请教怎么改变iOS9的改变状态栏字体颜色颜色

状态栏怎么变成这个颜色了_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
状态栏怎么变成这个颜色了
我有更好的答案
手机状态栏颜色无法手动更改,部分机型由于将系统升级至安卓4.4版本。该系统状态栏上的图标(电池等)颜色更改为白色,该情况为正常现象,无法修改。
三星产品问答服务
主营:电子产品
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包深入理解iOS的状态栏
作者:MajorLMJ
字体:[ ] 类型:转载 时间:
这篇文章给大家分别介绍了iOS状态栏隐藏的两种方法、状态栏样式、背景色以及状态栏的应用,有需要的朋友们可以参考借鉴,下面来一起看看吧。
一、状态栏的隐藏
状态栏的隐藏主要有两种方法,下面来一起看看吧。
方法一:通过代码控制
@interface UIApplication(UIApplicationDeprecated)
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden
NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated
NS_DEPRECATED_IOS(2_0, 3_2) __TVOS_PROHIBITED;
// use -setStatusBarHidden:withAnimation:
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation
NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
注意:让我们先来看看// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.这个注释提示,苹果提示开发者如果使用的是系统基础的状态栏样式你的这些设置是不生效的,在接下来要介绍的通过Info.plist隐藏状态栏同样要注意这件事。
在Info.plist中添加一个View controller-based status bar appearance设置选项,设置为NO这样就可以使用上边的方法了
注意:添加的View controller-based status bar appearance是Bool类型,默认为Yes,很不幸iOS9之后苹果已经不推荐使用这些方法了,这些方法能用但是会报警告。
那么这些方法被禁用以后,如何操作呢?注释里已经提示Use -[UIViewController prefersStatusBarHidden]这是iOS7之后苹果在UIViewController里添加的新方法,这么做的目的可以让开发者更加灵活的自定义每个ViewController的状态栏。
- (BOOL)prefersStatusBarHidden{
return YES;
iOS7之后UIViewController中不只提供了这个关于状态栏的设置的函数,还有其他的,后面详细说。
方法二:通过Info.plist控制
1,首先我们依然要设置这个(第2步中的两种方式都要设置这个参数)
2,然后设置(两种方式)
两者是等效的!并且两者的状态是同步的。
二、状态栏样式
先看看都有哪些样式(解释看注释)
typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
//默认样式,黑字透明状态栏,适合用于背景色为亮色的页面
UIStatusBarStyleDefault
= 0, // Dark content, for use on light backgrounds
//白字透明状态栏,适合用于背景色为暗色的页面
UIStatusBarStyleLightContent
NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
// iOS7.0以前黑底白字,iOS7以后跟UIStatusBarStyleLightContent效果一样
UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
// iOS7.0以前启动页为灰底白字,iOS7以后跟UIStatusBarStyleLightContent效果一样
UIStatusBarStyleBlackOpaque
NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
} __TVOS_PROHIBITED;
如何设置状态栏样式
// Setting the statusBarStyle does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle
NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated
NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
同样iOS9以后这些方法被禁用了,苹果推荐在具体的viewController中Use -[UIViewController preferredStatusBarStyle]
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightC
注意:我们通常使用的viewController都是嵌套在UINavigationController中使用的,此时在viewController中使用- (UIStatusBarStyle)preferredStatusBarS函数会发现设置并没有生效。
系统也给我们提供了一个函数- (UIViewController *)childViewControllerForStatusBarStyle,也可以解决这个问题,后面会讲。
三、背景色
iOS7以后默认情况下状态栏的背景为透明的,一种办法是我们自己写一个UIView作为背景添加到状态栏下面,这样就可以随意设置状态栏的颜色了。
另一种方法就是通过设置navigationBar的setBarTintColor颜色来改变状态栏颜色
UIViewController中其他有关状态栏的函数
preferredStatusBarUpdateAnimation函数
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarAnimationFade
如果想在当前已经显示的UIViewController中更改状态栏的样式的话,需要调用以上函数。调用该函数后,系统会主动调用preferredStatusBarStyle方法重绘状态栏的样式
childViewControllerForStatusBarStyle函数
// Override to return a child view controller or nil. If non-nil, that view controller's status bar appearance attributes will be used. If nil, self is used. Whenever the return values from these methods change, -setNeedsUpdatedStatusBarAttributes should be called.
- (nullable UIViewController *)childViewControllerForStatusBarStyle
NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;
这个函数的返回值默认返回nil,此时系统就会调用当前viewControllerA的preferredStatusBarStyle函数;如果返回值是另一个viewControllerB那么系统就会调用viewControllerB的preferredStatusBarStyle函数。
运用这个函数就可以解决嵌套UINavigationController设置样式无效的问题。
解释一下为什么嵌套UINavigationController的viewController的preferredStatusBarStyle函数设置无效:
在我们嵌套了UINavigationController的时候,我们的AppDelegate.window.rootViewController通常是我们创建的navigationController,这时首先会调用的是navigationController中的childViewControllerForStatusBarStyle函数,因为默认返回nil,那么接下来就会调用navigationController本身的preferredStatusBarStyle函数,所以我们在viewController中通过preferredStatusBarStyle函数设置的状态栏样式就不会被调用发现,所以也就无效了。
所以我们要自己创建一个继承于UINavigationcontroller的NavigationController,在这个子类中重写childViewControllerForStatusBarStyle函数
- (UIViewController *)childViewControllerForStatusBarStyle{
return self.topViewC
这样navigationController中的childViewControllerForStatusBarStyle函数会返回navigationController中最上层的viewController,那么viewController中的preferredStatusBarStyle函数的设置就会被系统获知
childViewControllerForStatusBarHidden函数
- (nullable UIViewController *)childViewControllerForStatusBarHidden
NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;
childViewControllerForStatusBarHidden函数的使用原理同上,不再赘述。
preferredStatusBarUpdateAnimation函数
// Override to return the type of animation that should be used for status bar changes for this view controller. This currently only affects changes to prefersStatusBarHidden.
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarAnimationFade
动画形式如下
typedef NS_ENUM(NSInteger, UIStatusBarAnimation) {
UIStatusBarAnimationNone,
UIStatusBarAnimationFade NS_ENUM_AVAILABLE_IOS(3_2),
UIStatusBarAnimationSlide NS_ENUM_AVAILABLE_IOS(3_2),
} __TVOS_PROHIBITED;
这个函数返回了动画效果。动画效果只有在prefersStatusBarHidden函数返回值变化的时候才会展示,同时要通过调用
[self setNeedsStatusBarAppearanceUpdate]函数来重绘状态栏
我们可以通过隐藏系统状态栏,然后自定义UIWindow通过设置setWindowLevel:UIWindowLevelStatusBar实现自定义状态栏。
以上就是这篇文章的全部内容了,希望能对各位iOS开发者们有所帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具输入关键字或相关内容进行搜索
系列文章导航:
iOS平台设置沉浸式状态栏显示效果正文:应用可视区域到系统状态栏下透明显示效果,如下图所示:
此模式下应用占用全屏区域,而系统状态栏会拦截用户操作事件,此时需要预留出系统状态栏高度。
获取系统状态栏高度及沉浸式状态判断参考:。HBuilder创建的应用默认不使用沉浸式状态栏样式,需要进行如下配置开启:
打开应用的manifest.json文件,切换到代码视图,在plus -& statusbar 下添加immersed节点并设置值为true。&plus&: {
&statusbar&: {
&immersed&: true
\n如下图所示:
保存后提交App云端打包注意:
1. 真机运行不生效,需提交App云端打包后才生效;
2. 此功能仅在iOS7及以上系统有效。
请问为什么我andriod离线打包后,通过plus.navigator.setStatusBarStyle('dark');设置的状态栏字体颜色会不生效了,应该怎样修改呢?
把line-height设置的高一些就可以了
把line-height设置的高一些就可以了
使用这个后在ios上设置statusbar怎么没用啊
啊 啊 啊啊 ....求解决
关于沉浸式,除了不在manifest.json文件中启用,也完全可以通过更改系统状态栏背景颜色做到和沉浸式效果一样。
plus.navigator.setStatusBarBackground(&red&)
目前显示效果是系统标题栏紧挨header内容,这个如何修改呐??
最后是使用margin-top解决的吗?
真坑,加上也不好使
http://ask./question/31964 求解决
怎么设置系统状态栏设置为透明??
对啊,你现在解决了没有啊,怎么吧顶部系统状态栏设置为透明
header 被遮挡住了,设置paddingTop还是不行啊,如何改动呢,求解,谢谢了
我当时也被这个坑坑坏了,hbuilder到处都是坑,还需要我们联合起来,相互学习啊。
离线打包不能实现这个效果吗?
云端打包后没看到效果
http://ask./article/173
离线打包,怎样设置?
真机运行不生效,需提交App云端打包后才生效
这个真是坑,弄成这样怎么测试,现在几乎所有的应用都是顶部系统状态栏透明的,
要回复文章请先或各位大神,状态栏有微微发红怎么破_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
各位大神,状态栏有微微发红怎么破
我有更好的答案
恢复到默认状态试试吧,也许可以把你的问题给解决了
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包你的位置: & 评论 & ios9 dock栏透明怎么设置?ios9 dock栏透明设置教程
类别:技巧分享
  ios9 dock栏透明怎么设置?ios9 dock栏透明设置教程
(您的评论需要经过审核才能显示,请文明发言!)&&剩余字数:
点击图片更换
请您注意:
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站评论发表的作品,本站有权在网站内保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款
评论排行榜
本站资源均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时撤销相应资源。
Copy . All Rights Reserved.

我要回帖

更多关于 ios 改变状态栏的颜色 的文章

 

随机推荐