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)
优先级

总结:

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

相关文章

  • iOS 实现简单的加载等待动画示例(思路与实现)

    iOS 实现简单的加载等待动画示例(思路与实现)

    本篇文章主要介绍了iOS 实现简单的加载等待动画示例(思路与实现),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • iOS中UITableView Cell实现自定义单选功能

    iOS中UITableView Cell实现自定义单选功能

    本篇文章主要介绍了iOS中UITableView Cell实现自定义单选功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • iOS中UIRefreshControl的基本使用详解

    iOS中UIRefreshControl的基本使用详解

    最近在应用中用到UIRefreshControl,觉着有必要给大家总结介绍一下这个控件,所以下面这篇文章主要给大家介绍了关于iOS中UIRefreshControl的基本使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-04-04
  • 关于iOS中属性变量setter与getter方法的理解

    关于iOS中属性变量setter与getter方法的理解

    这篇文章主要给大家介绍了关于iOS中属性变量setter与getter方法的相关资料,文章介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • iOS开发实战之Label全方位对齐的轻松实现

    iOS开发实战之Label全方位对齐的轻松实现

    这篇文章主要给大家介绍了关于iOS开发实战之轻松实现Label全方位对齐的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • 详解iOS应用程序内购/内付费(一)

    详解iOS应用程序内购/内付费(一)

    这篇文章主要介绍了详解iOS应用程序内购/内付费(一),小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • iOS中日志同步获取NSLog重定向以及其他详解

    iOS中日志同步获取NSLog重定向以及其他详解

    在Objective-c开发程序的时候,有专门的日志操作类NSLog,它将指定的输出,输出到(stderr),我们可以利用Xcode的日志输出窗口,下面这篇文章主要给大家介绍了关于iOS中日志同步获取NSLog重定向以及其他的相关资料,需要的朋友可以参考下。
    2017-12-12
  • 实例解析iOS开发中系统音效以及自定义音效的应用

    实例解析iOS开发中系统音效以及自定义音效的应用

    这篇文章主要介绍了iOS开发中系统音效以及自定义音效的应用,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-10-10
  • IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片优化方法

    这篇文章主要介绍了IOS开发中加载大量网络图片如何优化的相关资料,需要的朋友可以参考下
    2017-03-03
  • IOS自适配利器Masonry使用指南

    IOS自适配利器Masonry使用指南

    如果说自动布局解救了多屏幕适配,那众多三方库的出现就解救了系统自动布局的写法。Masonry就是其中一个。用法上也比较简单灵活,很大程度上替代了传统的NSLayoutConstraint布局方式。下面我们就来具体探讨下吧
    2016-01-01

最新评论