Tengo una configuración de control de navegación personalizado en mi aplicación, que modifica navigationBar
s titleTextAttributes
, tintColor
y otros en función de diferentes escenarios.
Al ejecutar la aplicación en iOS 13, la backBarButtonItem
flecha tenía el color azul predeterminado. El depurador de la vista mostró que solo los UIBarButtonItem
s UIImageView
tenían este tinte azul.
Lo que terminé haciendo fue configurar navigationBar.tintColor
dos veces para que cambiara el color ...
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 parte más extraña al buscar una solución fue el resultado inconsistente, lo que me hace pensar que está relacionado con ver el ciclo de vida y / o las animaciones de apariencia o el caché de Xcode :)
.none
onil
, simplemente le doy un color después de configurar la apariencia y simplemente funciona