iOS 13 UIBarButtonItem цвет в темном режиме - PullRequest
0 голосов
/ 11 октября 2019

Мое изображение UIBarButtonItem не меняет свой цвет при переключении между темным и светлым режимом.

Я установил цвет программно и ожидал, что он переключится между черным и белым при переключении режима. По крайней мере, он работает с tintColor моего NavigationBar.

Я установил:

myBarButton.tintColor = UIColor.white

, и изображение кнопки остается белым в темноте И в светлом режиме.

С другой стороны, в темном режиме черный и белый в темном режиме:

navigationBar.tintColor = UIColor.white

Почему он ведет себя по-разному и как я могу добавить эту функцию в свой UIBarButtonItem?

Ответы [ 2 ]

1 голос
/ 11 октября 2019

UIColor.white является , а не динамическим цветом. Он будет белым независимо от настроек внешнего вида. Если вы хотите, чтобы цвет отличался в зависимости от внешнего вида, вам нужно выбрать один из новых динамических системных цветов (например, UIColor.systemBackground будет белым на светлом и черным в темном режиме) или создать цветовой актив с другим цветом. значения для светлого и темного внешнего вида в каталоге активов.

Подробнее о новых системных цветах: https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color#dynamic-system-colors

0 голосов
/ 11 октября 2019

Использование нового API для iOS 13: https://developer.apple.com/documentation/uikit/uinavigationbarappearance

Пример:

let navStyle = UINavigationBarAppearance()

let buttonStyle = UIBarButtonItemAppearance()
// Change properties of buttonStyle here with dynamic colours such as UIColor.label.
style.buttonAppearance = buttonStyle
style.doneButtonAppearance = ...
style.backButtonAppearance = ...

navigationController?.navigationBar.standardAppearance = navStyle
navigationController?.navigationBar.scrollEdgeAppearance = ...
navigationController?.navigationBar.compactAppearance = ...
...