TintColor не меняется для UIBarButtonItem для стадии .normal в случае iOS 13.2
Я пробовал почти максимальное решение, и это не помогло, выбранный цвет состояния применяется, но для нормального состояния он не применяется. Эта проблема возникает только в iOS13.2.
tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: tabFont,
NSAttributedString.Key.foregroundColor: UIColor.yellow],
for: .selected)
tabBarItem.setTitleTextAttributes([NSAttributedString.Key.font: tabFont,
NSAttributedString.Key.foregroundColor: UIColor.white],
for: UIControl.State.normal)
Я отключил темный режим в plist. Он всегда отображается серым цветом.
1 ответ
Немного непонятно, в чем вопрос. Это ошибка или, по крайней мере, серьезное изменение поведения в iOS 13.
Чтобы убедиться в этом, просто создайте новый проект из шаблона приложения с вкладками и примените свой код в инициализаторе первого контроллера представления:
class FirstViewController: UIViewController {
required init?(coder: NSCoder) {
super.init(coder:coder)
let tabFont = UIFont(name: "Georgia", size: 14)!
tabBarItem.setTitleTextAttributes([.font: tabFont,
.foregroundColor: UIColor.yellow],
for: .selected)
tabBarItem.setTitleTextAttributes([.font: tabFont,
.foregroundColor: UIColor.white],
for: UIControl.State.normal)
}
}
В iOS 12 текст элемента панели вкладок желтый, если он выбран, и белый, если он не выбран. Но в iOS 13 текст элемента панели отображается серым, когда он не выбран.
Я не нашел удовлетворительного способа решить эту проблему. Как предлагается в комментарии, вы можете сказать что-то вроде этого:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.tabBarController?.tabBar.unselectedItemTintColor = .white
}
Но это слишком широкая кисть, потому что она окрашивает все элементы панели вкладок, а также окрашивает изображение.
Вы можете попробовать использовать новый класс UITabBarItemAppearance, но у него есть другие нежелательные побочные эффекты.
Так что кроме сообщения об ошибке, вы мало что можете сделать.