如何为每个视图控制器分别更改状态栏颜色?

Posted

技术标签:

【中文标题】如何为每个视图控制器分别更改状态栏颜色?【英文标题】:How to change status bar colours separately for each ViewController? 【发布时间】:2014-04-14 14:57:02 【问题描述】:

我正在使用 ios 7 和情节提要开发一个应用程序。我有几个视图控制器。我想要做的是根据导航栏颜色更改状态栏颜色。但是每个视图控制器都有不同颜色的导航栏。我知道我可以通过向 info.plist 添加一个标志和如下代码来更改状态栏颜色:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
    
  self.window.clipsToBounds = YES;
  [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackOpaque];     

   UIInterfaceOrientation orientation = [UIApplication   sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)

    self.window.frame =  CGRectMake(20, 0,self.window.frame.size.width-20,self.window.frame.size.height);
    self.window.bounds = CGRectMake(20, 0, self.window.frame.size.width, self.window.frame.size.height);
 else

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
    self.window.bounds = CGRectMake(0, 20, self.window.frame.size.width, self.window.frame.size.height);


但是如何更改每个ViewController 的颜色?

【问题讨论】:

你在说this吗? 【参考方案1】:

将此方法添加到每个viewCONtroller

- (UIStatusBarStyle)preferredStatusBarStyle

  return UIStatusBarStyleDefault; // or UIStatusBarStyleLightContent

在每个视图控制器的 viewDidLoad 中:

[self preferredStatusBarStyle];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

同样在项目属性中,您需要将此选项设置为 YES:查看基于控制器的状态栏外观

【讨论】:

以上是关于如何为每个视图控制器分别更改状态栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 在一个视图控制器中更改状态栏颜色?

如何为状态栏设置渐变颜色

在运行中以编程方式更改 iOS7 状态栏颜色?

如何更改 Flutter WEB 中的“状态栏”颜色? (保存为书签后)

在 iPhone 上切换应用时更改状态栏颜色的问题

在android中动态设置状态栏颜色