在iOS7中修改状态栏字体的颜色-b

状态栏的字体为黑色: UIStatusBarStyleDefault

状态栏的字体为白色: UIStatusBarStyleLightContent

一、在 info.plist  中,将 View controller-based status bar appearance  设为 NO

状态栏字体的颜色只由下面的属性设定,默认为白色:

// default is UIStatusBarStyleDefault

[UIApplication sharedApplication].statusBarStyle

解决个别  vc 中状态栏字体颜色不同的办法

1、在info.plist中,将View controller-based status bar appearance设为NO.

2、在app delegate中:

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

3、在个别状态栏字体颜色不一样的vc中

-(void)viewWillAppear:(BOOL)animated{

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

}

-(void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

}

二、在 info.plist  中,将 View controller-based status bar appearance  设为 YES ,或者没有设置。

View controller-based status bar appearance的默认值就是YES。

如果View controller-based status bar appearance为YES。

则[UIApplication sharedApplication].statusBarStyle 无效。

用下面的方法:

1、在vc中重写vc的preferredStatusBarStyle方法。

-(UIStatusBarStyle)preferredStatusBarStyle

{

return UIStatusBarStyleDefault;

}

2、在viewDidload中调用:[self setNeedsStatusBarAppearanceUpdate];

但是,当vc在nav中时,上面方法没用 ,vc中的preferredStatusBarStyle方法根本不用被调用。

原因是,[self setNeedsStatusBarAppearanceUpdate]发出后,

只会调用navigation controller中的preferredStatusBarStyle方法,

vc中的preferredStatusBarStyley方法跟本不会被调用。

解决办法有两个:

方法一:

设置navbar的barStyle 属性会影响status bar 的字体和背景色。如下。

//status bar的字体为白色

//导航栏的背景色是黑色。

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

//status bar的字体为黑色

//导航栏的背景色是白色,状态栏的背景色也是白色。

//self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

方法二:

自定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:

MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];

self.window.rootViewController = nav;

@implementation MyNav

- (UIStatusBarStyle)preferredStatusBarStyle

{

UIViewController* topVC = self.topViewController;

return [topVC preferredStatusBarStyle];

}

说法二

下面截图给出修改 iOS 状态栏颜色的 4 种方式

Target.png

Info.plist.png

Storyboard.png

code.png

其中第四张图中的代码,直接写在你的任何一个 ViewController 的 class 里面就可以。

然而,以上 4 种方法存在两个问题:
1.无法在某一个 ViewController 里面任意切换
2.优先级不够高,可能会失效

下面祭出第 5 种方法:
首先去 Info.plist 里面,把 UIViewControllerBasedStatusBarAppearance 设置为 NO.

info.plist.png

然后在你想要改变状态栏颜色的任何地方,写下面这行代码

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.Default, animated: true)

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

文/KyXu(简书作者)
原文链接:http://www.jianshu.com/p/9d6b6f790493
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-08-04 10:12:25

在iOS7中修改状态栏字体的颜色-b的相关文章

在iOS7中修改状态栏字体的颜色

状态栏的字体为黑色: UIStatusBarStyleDefault 状态栏的字体为白色: UIStatusBarStyleLightContent 一.在 info.plist  中,将 View controller-based status bar appearance  设为 NO 状态栏字体的颜色只由下面的属性设定,默认为白色: // default is UIStatusBarStyleDefault [UIApplication sharedApplication].statusB

在iOS7中改动状态栏字体的颜色

状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 一.在info.plist中,将View controller-based status bar appearance设为NO 状态栏字体的颜色仅仅由以下的属性设定,默觉得白色: // default is UIStatusBarStyleDefault [UIApplication sharedApplication].statusBarStyle

iOS7中修改StatusBar的显示颜色

效果图如下: 在iOS7中想手动修改statusBar的颜色,第一步需要做的就是在plist文件中设置View controller-based status bar appearance值为NO 第二步就是在代码中实现了,如下所示: // // RootViewController.m // statusBar // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" @

iOS 修改状态栏字体的颜色

在实际开发中,状态栏有时,需要我们自己设置: 比如: 默认状态栏 假如我们开发的view是黑色的,那么效果如图: 状态栏是白底黑字,下面的view是黑底? 这样子真的好吗?说好的和谐社会呢?说好的开发就是艺术呢? 所以最好的效果是 view的底色和状态栏的比较和谐点: 如何改变状态栏的颜色呢? 1 .首先在工程的Supporting Files文件夹中 info.plist  中,将 View-based status bar appearance  设为 NO 2.在对应的viewcontro

iOS 修改状态栏字体颜色(亲测,好用)

有时候我们需要根据不同的背景修改状态栏字体的颜色,我的方法比较复杂,如果有更好用的方法欢迎大家提出来,我会持续更新的.#方法一1.首先是设置info.plist 文件: 将View controller-based status bar appearance 的值设置为NO.2.在AppDelegate.m 的方法中如下设置,默认会显示黑色等于为你的app状态栏设置一个主颜色 - (BOOL)application:(UIApplication *)application didFinishLa

修改状态栏的文字颜色和背景色

一.修改状态栏文字颜色 这里修改文字颜色分两种情况 (1)导航栏是隐藏状态 如果导航栏为隐藏状态 可以直接在控制器中重写如下方法 // 重写方法 状态栏白色 - (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } 这样状态栏的文字就可以变成白色了 (2)导航栏不是隐藏状态 如果导航栏不是隐藏状态 会发现方法(1)没有作用了这时要采用第二种方法, 一共有两个步骤1 -> 设置info.p

iOS7中的状态栏

?从iOS7开始,系统提供了2种管理状态栏的方式 ?通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏) ?通过UIApplication管理(一个应用程序的状态栏都由它统一管理) ?在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式 ?状态栏的样式 - (UIStatusBarStyle)preferredStatusBarStyle

(三十七)Android开发中修改程序字体

1.在Android XML文件中设置系统默认的字体 可以在XML文件中采用android:typeface设置字体,例如android:typeface=”monospace”.在这里例子中我们在Activity中对android:text=”Hello, World! 您好”分别进行了四种显示方式,依次为“Sans”,“serif”,“monospace”和系统缺省方式(经试验缺省采用采用sans).英文字体有差异,貌似中文字体没有差异.XML文件如下: <?xml version=“1.0

iOS7之后修改状态栏状态

要想实现ios7之后状态栏上时间等的显示是亮色状态,那就之需要override这个方法, - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent;} 当然,这样做了还不行,系统还是无法调用上面那个方法,还需要实现次方法 [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack]; 当然你也可以用令一种方式来完成