J'ai une configuration du contrôleur de navigation personnalisé dans mon application, ce qui modifie navigationBar
s titleTextAttributes
, tintColor
et d' autres en fonction de différents scénarios.
En exécutant l'application sur iOS 13, la backBarButtonItem
flèche avait la couleur de teinte bleue par défaut. Le débogueur de vue a montré que seuls les UIBarButtonItem
s UIImageView
avaient cette teinte bleue.
Ce que j'ai fini par faire, c'était de régler le navigationBar.tintColor
double pour qu'il change de couleur ...
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)
}
La partie la plus étrange lors de la recherche de solution était le résultat incohérent, ce qui me fait penser que cela est lié au cycle de vie et / ou aux animations d'apparence ou au cache Xcode :)
.none
ounil
je lui donne juste une couleur après avoir défini l'apparence et ça fonctionne