我在状态栏中遇到文本颜色问题。我想让文字颜色变白,但在模态视图上保持黑色。
我有下一个配置:
UITabBarViewController
UINavigationControllers
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];
}
我还尝试将-preferredStatusBarStyle
的返回值更改为UIStatusBarStyleDefault
(好吧,我知道它应该用黑色绘制文字,但无论如何我都试过了)
将状态栏选项设置为Storyboard中的Light Content相同。也行不通。
我知道有很多关于SO的问题与我的相似,但提议的解决方案对我的情况没有帮助。
我的状态栏仍然如下:
我想将其颜色更改为白色= /
答案 0 :(得分: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上的这个类别正常工作。
答案 1 :(得分:2)
首先,您要说- (UIStatusBarStyle)preferredStatusBarStyle
子类中永远不会调用UIViewController
。这是正常的。您的根视图控制器将调用此方法。在您的情况下,它是UITabBarViewController
。
你还说你曾试过set Status Bar option to Light Content in Storyboard
。仔细观察,您应该在名为Simulated metrics
的部分中完成此操作。正如标题所示,这里的修改是模拟的......
我建议您尝试在Info.plist中添加密钥UIViewControllerBasedStatusBarAppearance
并将其设置为YES。
答案 2 :(得分:0)
您需要在RootViewController中设置它:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];