У мене є налаштування контролера призначених для користувача навігації в моєму додатку, яке змінює navigationBar
їй titleTextAttributes
, tintColor
і інші в залежності від різних сценаріїв.
Запускаючи додаток на iOS 13, backBarButtonItem
стрілка мала кольоровий відтінок синього кольору. Налагоджувач виду показав, що тільки UIBarButtonItem
s UIImageView
мали цей синій відтінок.
Що я в кінцевому підсумку робив - це встановити navigationBar.tintColor
двічі, щоб він міг змінити колір ...
public class MyNavigationController: UINavigationController, UINavigationControllerDelegate {
public var preferredNavigationBarTintColor: UIColor?
override public func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
public func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
// if you want to change color, you have to set it twice
viewController.navigationController?.navigationBar.tintColor = .none
viewController.navigationController?.navigationBar.tintColor = preferredNavigationBarTintColor ?? .white
// following line removes the text from back button
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}
Найбільш дивною частиною пошуку рішення був невідповідний результат, що змушує мене думати, що це стосується перегляду життєвого циклу та / або анімації зовнішнього вигляду або кешу Xcode :)