受け入れられた回答は私にとってはうまくいきましたが、別のvcにポップバックまたはプッシュしたときにシャドウイメージを再表示したいときに、ナビゲーションバーに目立つ点滅があったことに気付きました。
このメソッドnavigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
をviewWillAppearで使用すると、現在表示されているビューコントローラーでシャドウバーが非表示になります。
これら2つの方法を使用する
navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")
viewWillDisappearでも点滅は発生しますが、ナビゲーションバー自体ではなく影の画像が再表示された場合にのみ発生します。
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()
}