Ich habe ein benutzerdefinierte Navigation - Controller - Setup in meiner app, die modifiziert navigationBar
s titleTextAttributes
, tintColor
und andere , in Abhängigkeit von unterschiedlichen Szenarien.
Beim Ausführen der App unter iOS 13 hatte der backBarButtonItem
Pfeil die Standardfarbe Blau. Der View-Debugger zeigte, dass nur die UIBarButtonItem
s UIImageView
diesen blauen Farbton hatten.
Am Ende habe ich navigationBar.tintColor
zweimal festgelegt, dass die Farbe geändert werden soll ...
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)
}
Der seltsamste Teil bei der Suche nach einer Lösung war das inkonsistente Ergebnis, was mich glauben lässt, dass es mit der Anzeige von Lebenszyklus- und / oder Erscheinungsanimationen oder dem Xcode-Cache zusammenhängt :)
.none
odernil
, ich gebe ihm nur eine Farbe, nachdem ich das Aussehen eingestellt habe und es funktioniert einfach