Swift UIApplication.setStatusBarStyle не работает

Вот моя реализация в подклассе UIViewController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
}

Я попытался поместить его в код инициализации AppDelegate (используя переданный в экземпляре UIApplication), однако строка состояния все еще черная.

Это ошибка в iOS 8 или я делаю это неправильно?

Примечание: я могу нарушать чей-то закон здесь, обсуждая ios 8. Это общая проблема, которая, когда скомпилировано, не работает и для ios 7.

Обновление: все еще не работает, даже со значением в Info.plist и кодом в - didFinishLaunchingWithOptionsНету до сих пор не работает

2 ответа

Решение

Вы действительно должны реализовать preferredStatusBarStyle на вашем контроллере просмотра:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}
  1. Перейти к файлу Info.plist
  2. Наведите указатель мыши на одну из этих строк, и появятся кнопки (+) и (-).
  3. Нажмите кнопку "плюс", чтобы добавить новый ключ. Введите начальный с заглавной буквы V, и автоматически первым выбором будет " Просмотр внешнего вида строки состояния на основе контроллера".
  4. Добавьте это как КЛЮЧ.
  5. Установите ЗНАЧЕНИЕ на "НЕТ"
  6. Перейти к вам AppDelegate.swift
  7. Добавьте следующий код внутри метода
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
    application.setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)

    return true
}
  1. СДЕЛАННЫЙ! Запустите ваше приложение, и ваша строка состояния теперь БЕЛАЯ!
Другие вопросы по тегам