Панель навигации iOS7 + Строка состояния текста Цвет текста

У меня проблемы с цветом текста в строке состояния. Я хочу сделать цвет текста белым, но сохраняю черный цвет на модальных представлениях.

У меня есть следующая конфигурация:

  • Раскадровка с настройками "Открывается в версии 5.1" и "Цель развертывания проекта 7.0" и "Просмотр как iOS7 и более поздних версий",
  • UITabBarViewController
  • 4 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 (ну, я знаю, что он должен писать текст черным цветом, но я все равно пытался)

То же самое для настройки параметра "Строка состояния" для "Легкого содержимого в раскадровке". Не работает.

Я знаю, что на SO очень много вопросов, похожих на мои, но предлагаемые решения не помогают в моей ситуации.

Моя строка состояния все еще выглядит так:

И я хочу изменить его цвет на белый =/

3 ответа

Это работа, которую я иногда встречал сейчас, после того, как боролся с этой проблемой около 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 просто работает.


Прежде всего, вы говорите, что - (UIStatusBarStyle)preferredStatusBarStyle никогда не вызывается в ваших подклассах UIViewController. Это нормально. Этот метод вызывается контроллером корневого представления. В вашем случае это UITabBarViewController.

Вы также говорите, что пытались set Status Bar option to Light Content in Storyboard. Если вы посмотрите внимательно, вы должны были сделать это в разделе " Simulated metrics. Итак, как говорится в заголовке, модификации здесь моделируются...

Я предлагаю вам попробовать добавить ключ UIViewControllerBasedStatusBarAppearance в свой Info.plist и установить его в YES.


Вы должны установить это в свой RootViewController:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

licensed under cc by-sa 3.0 with attribution.