Внешний вид UINavigationBar + iOS 13 Dark Mode - Как установить широкий цвет приложения?

В iOS 12 и ранее я использовал [[UINavigationBar appearance] setBackgroundColor...], чтобы установить цвет фона всего приложения для всех панелей навигации.

В iOS 13 я хотел бы сделать то же самое, поддерживая темный режим. В каталоге активов приложений я определил названный цвет NavBarBackground и указал цвета Any appearance и Dark appearance.

Если темный режим отключен, используется правильный Any цвет. Однако, когда включен темный режим, указанный цвет Dark игнорируется, и все панели NavBar отображаются просто черным ...

Однако, если я вручную установил цвет фона панели навигации в IB на NavBarBackground, эта панель навигации будет отображать правильный цвет как в нормальном, так и в темном режиме.

Итак, как использовать [UINavigationBar appearance] вместе с темным режимом и именованными цветами?


person Andrei Herford    schedule 01.10.2019    source источник
comment
добавьте и попробуйте это в своем приложении if #available(iOS 13.0, *) { // disable dark mode window?.overrideUserInterfaceStyle = .light }, он изменит свет на все приложение   -  person Anbu.Karthik    schedule 01.10.2019
comment
Спасибо, но я имел в виду не это. Я хочу видеть разные цвета в нормальном и темном режимах. Проблема в том, что в темном режиме он показывает черный цвет по умолчанию вместо указанного.   -  person Andrei Herford    schedule 01.10.2019


Ответы (1)


Вы можете использовать API нового внешнего вида iOS 13: https://developer.apple.com/documentation/uikit/uinavigationbarappearance

Пример:

let style = UINavigationBarAppearance()
style.backgroundColor = .red
style.barTintColor = UIColor(named: "my_colour")!

navigationController?.navigationBar.standardAppearance = style
navigationController?.navigationBar.scrollEdgeAppearance = ...
navigationController?.navigationBar.compactAppearance = ...
person Ash Cameron    schedule 02.10.2019
comment
Как установить свойство barTintColor? , Я получаю сообщение об ошибке, поскольку UINavigationBarAppearance не имеет свойства barTintColor - person akr ios; 17.01.2020
comment
Чтобы установить цвет фона панели навигации, необходимо инициализировать свойство «backgroundColor» в экземпляре «UINavigationBarAppearance». - person Anas Merbouh; 03.06.2020