【问题标题】:iOS7 Navigation Bar + Status Bar Text ColoriOS7导航栏+状态栏文字颜色
【发布时间】:2014-01-29 13:32:42
【问题描述】:

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

我有下一个配置:

  • 故事板设置为“在 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];
}

我还尝试将-preferredStatusBarStyle 的返回值更改为UIStatusBarStyleDefault(好吧,我知道它应该将文本涂成黑色,但我还是尝试了)

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

我知道有很多关于 SO 的问题与我的类似,但建议的解决方案对我的情况没有帮助。

我的状态栏还是这样的:

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

【问题讨论】:

    标签: ios cocoa ios7 ios7-statusbar


    【解决方案1】:

    这是我在解决这个问题大约 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 上的这个类别才有效。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        您需要在 RootViewController 中进行设置:

        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
        

        【讨论】:

        • 这在 iOS 9 中已被弃用。
        猜你喜欢
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-26
        • 1970-01-01
        相关资源
        最近更新 更多