Saya memiliki pengaturan pengontrol navigasi khusus di aplikasi saya, yang memodifikasi navigationBar
s titleTextAttributes
, tintColor
dan lainnya tergantung pada skenario yang berbeda.
Menjalankan aplikasi di iOS 13 backBarButtonItem
panah memiliki warna warna biru standar. Tampilan debugger menunjukkan bahwa hanya huruf UIBarButtonItem
s yang UIImageView
memiliki warna biru ini.
Apa yang akhirnya saya lakukan adalah mengatur navigationBar.tintColor
dua 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 :)
.none
ataunil
, saya hanya memberi warna setelah mengatur penampilan dan itu hanya berfungsi