คำตอบที่ยอมรับได้ผลสำหรับฉัน แต่ฉันสังเกตเห็นเมื่อฉันต้องการให้ภาพเงาปรากฏขึ้นอีกครั้งเมื่อย้อนกลับหรือผลักไปข้างหน้าไปยัง vc อื่นมีการกะพริบที่เห็นได้ชัดเจนในแถบนำทาง
การใช้วิธีนี้navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
ใน viewWillAppear แถบเงาจะซ่อนอยู่ในตัวควบคุมมุมมองที่มองเห็นในปัจจุบัน
โดยใช้ 2 วิธีนี้
navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")
ในมุมมอง WillDis ปรากฏการกะพริบยังคงเกิดขึ้น แต่เฉพาะเมื่อภาพเงาปรากฏขึ้นอีกครั้งและไม่ใช่แถบนำทาง
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 1. hide the shadow image in the current view controller you want it hidden in
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
navigationController?.navigationBar.layoutIfNeeded()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
// 2. show the shadow image when pushing or popping in the next view controller. Only the shadow image will blink
navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")
navigationController?.navigationBar.layoutIfNeeded()
}