Принятый ответ сработал для меня, но я заметил, что когда я хотел, чтобы теневое изображение снова появлялось при переходе назад или переходе к другому виртуальному компьютеру, на панели навигации было заметное мигание.
Используя этот метод 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()
}