Предпочтительный StatusBarStyle var не работает в iOS12? - PullRequest
0 голосов
/ 22 сентября 2018

Добавление

application.statusBarStyle = .lightContent

в метод didFinishLaunchingWithOptions моего AppDelegate, а также добавление

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

в ВК больше не работает на iOS12 / Xcode10

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Это не имеет ничего общего с iOS 12. У вас просто неправильные правила.

В ситуации с контроллером навигации цвет строки состояния не определяется значением preferredStatusBarStyle контроллера вида.

Удивительно, но это определяется навигационной панелью barStyle.Чтобы получить светлый текст строки состояния, скажите (в вашем контроллере вида):

self.navigationController?.navigationBar.barStyle = .black

Трудно поверить, но это правда.Несколько лет назад я получил эту информацию напрямую от Apple.

Вы также можете выполнить эту настройку в раскадровке.

Пример!Стиль панели навигации: .default:

enter image description here

Стиль панели навигации: .black:

enter image description here

0 голосов
/ 22 сентября 2018

Если вы выбираете один и тот же цвет строки состояния для каждого View Controller:

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Добавьте это в ваш Info.plist и установите цвет строки состояния из Project -> Targets -> Status Bar Style на нужный цвет.

С другой стороны, в вашем случае у вас есть контроллер навигации, который встроен в контроллер представления.Поэтому вы хотите изменить цвет строки состояния для каждой страницы.

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

Добавьте это в свой Info.plist.Затем создайте пользовательский класс для вашего NavigationController.После этого вы можете реализовать метод:

class LightContentNavigationController: UINavigationController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Вот и все!Пожалуйста, сообщите мне, было ли это полезно!

...