У меня есть пользовательская цветная панель навигации, и я должен убедиться, что цвет строки состояния установлен на белый. В предыдущей iOS 13 это было легко сделать, вот фрагмент кода из UIViewController, который отлично справился со своей задачей:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.barStyle = .black
}
Проблема, с которой я сталкиваюсь в iOS 13, заключается в том, что мне теперь нужно использоватьстандартные элементы NavigationBar и scrollEdgeAppearance для отмены принудительной прозрачности фона в новом UIKit. В то время как я могу получить текст и цвет фона NavigationBar до того, что мне нужно, с помощью UINavigationBarAppearance (), он возвращает свой цвет строки состояния на черный. Вот простой пример, который воспроизводит проблему:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.standardAppearance = UINavigationBarAppearance() // <--- This is the line that reverts my status bar colour back to black
self.navigationController?.navigationBar.barStyle = .black
}
Я не уверен, что я делаю что-то не так или это ошибка UIKit?
EDIT
Наконец-то удалось решить проблему, добавив два следующих свойства в мой файл Info.plist:
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>