iOS7导航栏+状态栏文本颜色

3

我有一个问题,就是状态栏文本的颜色。我想要将文本的颜色变成白色,但是保持模态视图上的黑色。

我的配置如下:

  • Storyboard 的设置为 “在 5.1 中打开” 和“项目部署目标为 7.0”,并且“查看 iOS7 及更高版本”
  • UITabBarViewController
  • 4个UINavigationControllers
  • 每个导航控制器内都有一个自定义的UIViewController子类

通过 appearance 将 UINavigationBar 的背景颜色设置为暗色。

View controller-based status bar appearance 设置为 YES

我的 UITabBarViewController 子类具有以下方法:

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

这些方法是在应用程序启动后调用的。

在我的UIViewControllers子类中,我也有相同的方法调用:

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent; // This method never called
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

我也尝试将-preferredStatusBarStyle的返回值更改为UIStatusBarStyleDefault(我知道它应该以黑色绘制文本,但我仍然尝试了一下)。
同样的事情也发生在在Storyboard中设置状态栏选项为Light Content。也不起作用。
我知道SO上有很多类似于我的问题,但是提出的解决方案在我的情况下并没有帮助。
我的状态栏仍然看起来像这样: StatusBar 我想将其颜色更改为白色 =/
3个回答

4

我最近在苦苦挣扎了两周之后,找到了一个解决这个问题的方法。

这是一个解决方法。
// This is a workaround just enables white text colour in status bar in iOS7, iOS7.1
// Dont touch it until things break
// Despite this category says "draw white", colour automatically becomes black on white background w/o additional code
@interface UINavigationController (StatusBarStyle)

@end

@implementation UINavigationController (StatusBarStyle)
- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
@end
// Place at the bottom of your AppDelegate.m
// Magic!

我需要感谢回答此问题的人,但我已经尝试过这些解决方案,它们没有帮助:(这个UINavigationController类别就起作用了。

2
首先,你说在你的UIViewController子类中从未调用过- (UIStatusBarStyle)preferredStatusBarStyle方法。这是正常的。该方法由您的根视图控制器调用。在你的情况下,它是UITabBarViewController
你还说你尝试过在Storyboard中将状态栏选项设置为浅色内容。如果你仔细看,你应该在一个名为Simulated metrics的部分中完成。因此,正如标题所示,这里的修改是模拟的...
我建议你尝试在Info.plist中添加键UIViewControllerBasedStatusBarAppearance并将其设置为YES。

0
你需要在你的 RootViewController 中进行设置:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

1
在iOS 9中,此功能已被弃用。 - donkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接