基于不同的ViewController,在iOS 7中设置灯光状态栏文字颜色的正确方法

前端之家收集整理的这篇文章主要介绍了基于不同的ViewController,在iOS 7中设置灯光状态栏文字颜色的正确方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要让一个嵌入在UINavigationController中的特定ViewController具有灯状态栏的文本颜色(但其他ViewController的行为方式不同).我知道至少有3种方法,但是在我的情况下都不行.

> How to change Status Bar text color in iOS 7,方法主要是:

>在plist中将UIViewControllerBasedStatusBarAppearance设置为YES
>在viewDidLoad中做一个[self setNeedsStatusBarAppearanceUpdate];
>添加以下方法

- (UIStatusBarStyle)preferredStatusBarStyle{ 
      return UIStatusBarStyleLightContent; 
  }

在iOS 7.0.3上运行,这种方法对我来说不起作用,因为即使我已经正确地实现了所有3个步骤,preferredStatusBarStyle也不会被调用.
> UIStatusBarStyle PreferredStatusBarStyle does not work on iOS 7,方法主要有:

将您的导航栏的barStyle设置为UIBarStyleBlackTranslucent将给出白色状态栏文本(即UIStatusBarStyleLightContent),UIBarStyleDefault将给出黑色状态栏文本(即UIStatusBarStyleDefault).

这种方法在iPhone上运行平稳,但不在iPad上.
>将UIViewControllerBasedStatusBar外观设置为pl,然后使用

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

这显然不适用于这种情况,因为我需要为两个ViewController指定不同的状态栏颜色.

感谢所有帮助!

解决方法

对于有UINavigationController的这个问题的人,我可以建议创建一个自定义的UINavigationController并在其上实现preferredStatusBarStyle:
- (UIStatusBarStyle)preferredStatusBarStyle
{
    return [self.topViewController preferredStatusBarStyle];
}

这样,状态栏样式将是顶视图控制器的.现在你可以实现视图控制器的preferredStatusBarStyle,无论如何你喜欢.

猜你在找的iOS相关文章