Saya memiliki pengaturan pengontrol navigasi khusus di aplikasi saya, yang memodifikasi navigationBars titleTextAttributes, tintColordan lainnya tergantung pada skenario yang berbeda.
Menjalankan aplikasi di iOS 13 backBarButtonItempanah memiliki warna warna biru standar. Tampilan debugger menunjukkan bahwa hanya huruf UIBarButtonItems yang UIImageViewmemiliki warna biru ini.
Apa yang akhirnya saya lakukan adalah mengatur navigationBar.tintColordua kali agar warna berubah ...
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)
}
Bagian yang paling aneh ketika mencari solusi adalah hasil yang tidak konsisten, yang membuat saya berpikir terkait dengan siklus hidup dan / atau tampilan animasi atau cache Xcode :)