3

我在状态栏中的文本颜色有问题。我想将文本颜色设为白色,但在模态视图上保持黑色。

我有下一个配置:

  • 带有设置“在 5.1 中打开”和“项目部署目标 7.0”和“以 iOS7 及更高版本查看”的情节提要
  • UITabBarViewController
  • 4UINavigationControllers
  • 每个导航控制器都有UIViewController内部的自定义子类

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

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];
}

我也尝试将返回值更改-preferredStatusBarStyleUIStatusBarStyleDefault(好吧,我知道它应该将文本绘制为黑色,但我还是尝试了)

将状态栏选项设置为情节提要中的轻量内容也是如此。也不行。

我知道有很多与我类似的问题,但提出的解决方案对我的情况没有帮助。

我的状态栏仍然是这样的:

状态栏

我想把它的颜色改成白色=/

4

3 回答 3

4

这是我在为这个问题苦苦挣扎大约 2 周后偶尔发现的一种解决方法。

// 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 上的这个类别有效。

于 2014-01-29T14:02:57.113 回答
2

首先,你说- (UIStatusBarStyle)preferredStatusBarStyle你的子类中永远不会调用它UIViewController。这是正常的。此方法由您的根视图控制器调用。在您的情况下,它是UITabBarViewController.

你还说你试过了set Status Bar option to Light Content in Storyboard。如果您仔细观察,您应该在名为Simulated metrics. 所以正如标题所暗示的,这里的修改是模拟的......

我建议您尝试UIViewControllerBasedStatusBarAppearance在 Info.plist 中添加密钥并将其设置为 YES。

于 2014-01-29T13:50:40.660 回答
0

您需要在 RootViewController 中进行设置:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
于 2014-01-29T13:46:49.000 回答