Swift: невозможно установить StatusBarStyleLightContent

Это действительно странно, у меня есть контроллер просмотра страниц с встроенным потоком, и я не могу установить белый цвет в строке состояния.

Я добавил «стиль строки состояния» со значением «UIStatusBarStyleLightContent» в info.plist вместе с соответствующей строкой в ​​AppDelegate.

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

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

Может быть, это что-то с Xcode 6.3? Кто-нибудь из вас сталкивался с такой странной проблемой? Если да, то как это исправить?

Заранее спасибо!


person theDC    schedule 05.05.2015    source источник


Ответы (4)


Просто добавил эти четыре строки в свой Info.plist

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>

После этого мне даже не нужно было ничего устанавливать из кода.

person Dániel Nagy    schedule 05.05.2015
comment
Это то же самое, что я сделал в info.plist, я думаю - person theDC; 05.05.2015
comment
@DCDC Вполне, потому что без установки UIViewControllerBasedStatusBarAppearance в false это не сработает. - person Dániel Nagy; 05.05.2015
comment
@DCDC, поэтому установите их оба, а не только один. - person Dániel Nagy; 05.05.2015

Идеальный и рабочий способ сделать StatusBar LightContent.

1) Перейдите в info.plist и добавьте свойство «Просмотр внешнего вида строки состояния на основе контроллера» = НЕТ

2) В вашем AppDelgate.swift поместите этот код:

application.setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

Это определенно работает! Попробуйте и дайте мне знать, если у вас возникнут какие-либо проблемы.

person Sohil R. Memon    schedule 05.05.2015

Добавьте в свой ViewController:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}
person gabuh    schedule 05.05.2015
comment
я должен создать новый класс? Или куда вставить этот код? - person theDC; 05.05.2015
comment
Новый класс. он заменяет базовый UINavigationController, который вы используете. - person gabuh; 05.05.2015
comment
Хорошо, тогда сделайте что-то еще, импортируйте куда-нибудь этот класс или просто создайте его, а все остальное будет обработано? - person theDC; 05.05.2015
comment
Если вы используете раскадровки, выберите в нем navigationController и назначьте его своему новому подклассу. Например, когда вы назначаете TableViewController пользовательскому подклассу... - person gabuh; 05.05.2015
comment
И если вы создаете экземпляр UINavigationController, просто замените его экземпляром вашего нового подкласса. - person gabuh; 05.05.2015
comment
Навигатором пока не пользуюсь. Что, если бы это было приложение с одним представлением, это должен быть способ установить подсветку строки состояния - person theDC; 05.05.2015
comment
Извините, я неправильно прочитал ваш пост.... тогда просто используйте его preferredStatusBarStyle() в своем ViewController - person gabuh; 05.05.2015

Вам необходимо выполнить следующие шаги.

  1. Установите внешний вид строки состояния на основе контроллера View в NO в файле .plist.

  2. UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

person Hitendra Solanki    schedule 05.05.2015