ฉันมีการติดตั้งควบคุมการนำกำหนดเองใน app ของฉันซึ่งปรับเปลี่ยนnavigationBar
s titleTextAttributes
, tintColor
และอื่น ๆ ขึ้นอยู่กับสถานการณ์ที่แตกต่างกัน
การเรียกใช้แอพใน iOS 13 backBarButtonItem
ลูกศรมีสีโทนน้ำเงินเริ่มต้น ดีบักเกอร์มุมมองแสดงให้เห็นว่ามีเพียงUIBarButtonItem
s เท่านั้นที่UIImageView
มีสีน้ำเงินสีนี้
สิ่งที่ฉันทำคือการตั้งค่าnavigationBar.tintColor
สองครั้งเพื่อเปลี่ยนสี ...
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)
}
ส่วนที่แปลกประหลาดที่สุดเมื่อค้นหาวิธีแก้ไขคือผลลัพธ์ที่ไม่สอดคล้องกันซึ่งทำให้ฉันคิดว่ามันเกี่ยวข้องกับการดูวงจรชีวิตและ / หรือภาพเคลื่อนไหวลักษณะที่ปรากฏหรือแคช Xcode :)