Tôi có một menu tùy chỉnh thiết lập bộ điều khiển trong ứng dụng của tôi, làm biến đổi navigationBar
s titleTextAttributes
, tintColor
và những người khác tùy thuộc vào kịch bản khác nhau.
Chạy ứng dụng trên iOS 13, backBarButtonItem
mũi tên có màu xanh lam mặc định. Trình gỡ lỗi xem cho thấy chỉ có UIBarButtonItem
s UIImageView
có tông màu xanh này.
Điều cuối cùng tôi làm là thiết lập navigationBar.tintColor
hai lần để nó thay đổi màu sắc ...
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)
}
Phần kỳ lạ nhất khi tìm kiếm giải pháp là kết quả không nhất quán, khiến tôi nghĩ rằng nó liên quan đến việc xem vòng đời và / hoặc hình động xuất hiện hoặc bộ đệm Xcode :)