基于不同的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 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...