2014-01-29 4 views
2

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

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

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

Моя строка состояния до сих пор выглядит следующим образом:

StatusBar

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

ответ

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 просто работает.

0

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
+1

Это осуждается в прошивкой 9. – ge0rges

2

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

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

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

Смежные вопросы