Цвет оттенка строки состояния меняется на черный в iOS 6


Я, по-видимому, не понимаю, как использовать оттенок строки состояния в iOS 6. Я читал этот вопрос: Изменение цвета оттенка строки состояния но реализация предложенных там решений не решила проблему.

Я настроил параметры в панели сводка по цели (по умолчанию для стиля и тонировки) и добавил словарь параметров оттенка строки состояния в свою информацию.plist, как описано в WWDC 2012 Advanced Appearance Customization.

Моя строка состояния подкрашивается правильно при запуске, но как только я перехожу к другому контроллеру вида, строка состояния меняется на черную.

Второй контроллер вида встроен в собственный навигационный контроллер. Может ли это быть корнем проблемы?

Какова бы ни была причина, я надеюсь, что кто-то может предложить решение, которое позволит мне сделать мою строку состояния тонированной последовательно на протяжении всего моего приложения.

Пожалуйста, дайте мне знать, если что-то нуждается в уточнении и заранее спасибо за любую помощь.
3 5

3 ответа:

Сегодня я столкнулся с тем же вопросом, но ни один из подслащенных ответов не помог мне.

Поскольку я определил свой собственный цвет (красный, синий, зеленый, Альфа), я не хотел добавлять UIStatusBar через IB, мне нужно однострочное решение.

После тестирования на некоторое время для меня сработало следующее:

  1. в сводке проекта выберите в раскрывающемся меню Стиль строки состояния Black Transculent.
  2. В application: didFinishLaunchingWithOptions: введите следующую строку код:

    self.window.backgroundColor = [UIColor redColor]; //example color

Почему-то это не сработало бы для меня при установке стиля через код в application: didFinishLaunchingWithOptions:

Наслаждайтесь!

Одним из решений является установка невидимой навигационной панели перед вашим интерфейсом. Вам может потребоваться подкласс UINavigationController, если вы уже находитесь в навигационном интерфейсе. Например:

UINavigationBar* nav = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,320,1)];
nav.tintColor = [UIColor redColor];
nav.alpha = 0;
[self.navigationBar.superview addSubview:nav];

Это приводит к тому, что строка состояния становится красной, независимо от оттенка или цвета фона панели навигации. Это также работает, если нет панели навигации.

Кредит, где кредит должен быть; я получил идею установки alpha в 0 из https://stackoverflow.com/a/13587525/341994 .

Второй контроллер вида встроен в собственную навигацию. контроллер. Может ли это быть корнем проблемы?

Это, скорее всего, проблема - но я также думал, что запись plist сделает ее глобальной. Вы пробовали установить его программно с помощью UIAppearance (предполагая, что вы поддерживаете только ios6+)?

[[UITabBar appearance] setTintColor:[UIColor redColor]];