iOS开发技巧之状态栏字体颜色的设置方法

 更新时间:2018年08月31日 08:32:18   作者:梦想家-mxj  
有时候我们需要根据不同的背景修改状态栏字体的颜色,下面这篇文章主要给大家介绍了关于iOS开发技巧之状态栏字体颜色的设置方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧

状态栏的字体为黑色: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];

}

附:修改状态栏的背景颜色 (牵扯到UIWindow的层级关系)

/*改变状态栏的背景颜色,因为状态栏的层级比较高,所以按照如下添加就可以出来效果*/
UIView* stateView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, SCREEN_WIDTH, 20)];
[self.navigationController.navigationBar addSubview:stateView];
stateView.backgroundColor = [UIColor purpleColor];

备注: 因为在OC中,都应该知道UIWindow有三个层级,如下:

UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal;
UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert;
UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar

它们层级的优先级的值分别对应的是:

UIWindowLevelNormal: 0

UIWindowLevelAlert: 1000

UIWindowLevelStatusBar:2000

(而且UIAlertView的层级优先级为1996,UIActionSheet的层级优先级为2001)
优先级

总结:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Objective-C 实现2048算法类

    Objective-C 实现2048算法类

    本文给大家介绍的是使用Objective-C 实现的IOS版小游戏2048算法类,十分的实用,有需要的小伙伴可以参考下。
    2015-06-06
  • Objective-C与Swift之间的互相调用和跳转

    Objective-C与Swift之间的互相调用和跳转

    这篇文章主要给大家介绍了关于Objective-C与Swift之间的互相调用和跳转的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • iOS10 适配-Xcode8问题总结及解决方案

    iOS10 适配-Xcode8问题总结及解决方案

    这篇文章主要介绍了iOS10 适配-Xcode8问题总结的相关资料,这里整理了遇到的几种问题,并给出解决方案,需要的朋友可以参考下
    2016-11-11
  • iOS sqlite对数据库的各种操作(日常整理全)

    iOS sqlite对数据库的各种操作(日常整理全)

    在IOS中使用Sqlite来处理数据。如果你已经了解了SQL,那你可以很容易的掌握SQLite数据库的操作。本文给大家介绍iOS sqlite对数据库的各种操作,需要的朋友参考下吧
    2016-03-03
  • 清除WKWebView cookies的方法

    清除WKWebView cookies的方法

    下面小编就为大家带来一篇清除WKWebView cookies的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • iOS之UITableView计时器的实现方式总结(NSTimer、DispatchSource、CADisplayLink)

    iOS之UITableView计时器的实现方式总结(NSTimer、DispatchSource、CADisplayLi

    这篇文章主要给大家介绍了关于iOS之UITableView计时器的实现方式,其中包括NSTimer、DispatchSource、CADisplayLink等方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-12-12
  • 判断iPhone的WiFi是否打开的两种方法

    判断iPhone的WiFi是否打开的两种方法

    大家都知道判断WiFi是否连接可以使用Reachability进行判断,那么wifi是否打开应该怎么判断呢?下面小编给大家分享两种完全基于不同思路的方法,需要的朋友参考下
    2016-11-11
  • iOS多媒体音频(下)-录音及其播放的实例

    iOS多媒体音频(下)-录音及其播放的实例

    本篇文章主要介绍了iOS多媒体音频(下)-录音及其播放的实例,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • iOS实现微信分享多张图片功能

    iOS实现微信分享多张图片功能

    这篇文章主要为大家详细介绍了iOS实现微信分享多张图片功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Objective-C实现无限循环轮播器

    Objective-C实现无限循环轮播器

    这篇文章主要介绍了Objective-C实现无限循环轮播器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论