Eu tenho uma configuração controlador de navegação personalizado em meu aplicativo, o que modifica navigationBar
s titleTextAttributes
, tintColor
e outros dependendo de diferentes cenários.
Ao executar o aplicativo no iOS 13, a backBarButtonItem
seta tinha a cor azul padrão. O depurador vista mostrou que apenas os UIBarButtonItem
s UIImageView
tinha essa tonalidade azul.
Acabei fazendo o ajuste navigationBar.tintColor
duas vezes para que ele mudasse de cor ...
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)
}
A parte mais estranha ao procurar a solução foi o resultado inconsistente, o que me faz pensar que está relacionado à visualização do ciclo de vida e / ou animações de aparência ou cache do Xcode :)
.none
ounil
, eu apenas dar-lhe uma cor depois de definir a aparência e ele simplesmente funciona