美文网首页
改变状态栏颜色

改变状态栏颜色

作者: 逆战逆的态度 | 来源:发表于2016-08-09 15:27 被阅读31次

状态栏的字体为黑色: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 知识小集(Status Bar变换)

    背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改变状态栏颜色和控制状态栏显示...

  • iOS 状态栏隐藏+变色

    改变状态栏颜色 iOS手机状态栏默认是黑色,在某些情况下需要改变状态栏的颜色在info.plist文件中添加:Vi...

  • 20-状态栏

    1. 改变状态栏文字颜色(黑色变白色) 方法: 2.隐藏状态栏

  • 直播项目笔记(一)

    颜色封装 + ClOPageView + 瀑布流 搭建主题框架 导航栏布局 改变导航栏的颜色 改变状态栏的颜色 设...

  • 如何设置状态栏字体颜色

    改变状态栏样式,只对iOS7及以上系统有效。其实也就是改变状态栏的字体颜色,默认是黑色,可以根据导航栏背景颜色设置...

  • 设置状态栏样式

    全局 如果想改变所有控制器的状态栏样式,可以借助Info.plist实现 状态栏默认颜色是黑色文本 改变状态栏为白...

  • iOS改变状态栏文字颜色

    iOS改变状态栏文字颜色 UINavigationController不会将 preferredStatusBar...

  • Android沉浸式(透明)状态栏适配

    在Android系统4.4以前,状态栏的背景色和字体颜色都是不能改变的。但是4.4以后Google增加了改变状态栏...

  • iOS简单粗暴改变状态栏文字颜色

    在开发过程中,在很多地方会遇到让改变屏幕上方状态栏文字的颜色。 iOS状态栏文字颜色有两种: UIStatusBa...

  • mui页面传值失败及解决办法

    传值 接收 传值改变状态栏-从不同页面返回设置不同的状态栏颜色 打印提示 isTrusted":false原因:需...

网友评论

      本文标题:改变状态栏颜色

      本文链接:https://www.haomeiwen.com/subject/chrdsttx.html