Ios7 如何分别更改每个ViewController的状态栏颜色?

Ios7 如何分别更改每个ViewController的状态栏颜色?,ios7,statusbar,Ios7,Statusbar,我正在开发一款使用iOS 7和故事板的应用程序。我有几个视图控制器。我要做的是根据导航栏的颜色更改状态栏的颜色。但每个viewcontroller都有不同的颜色导航栏。我知道我可以通过在info.plist中添加一个标志来更改状态栏的颜色,代码如下: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { self.window.clipsToBounds = YES; [[UIApplicatio

我正在开发一款使用iOS 7和故事板的应用程序。我有几个视图控制器。我要做的是根据导航栏的颜色更改状态栏的颜色。但每个viewcontroller都有不同的颜色导航栏。我知道我可以通过在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

将此方法添加到每个ViewController

- (UIStatusBarStyle)preferredStatusBarStyle
{
  return UIStatusBarStyleDefault; // or UIStatusBarStyleLightContent
}
在viewDidLoad中,为每个视图控制器加载:

[self preferredStatusBarStyle];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
此外,在项目属性中,您需要将此选项设置为“是”:查看基于控制器的状态栏外观

您在谈论什么?