Если вы хотите иметь возможность делать это программно в swift 4, оставаясь в том же представлении,
if change {
navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.backgroundColor = UIColor(displayP3Red: 255/255, green: 206/255, blue: 24/255, alpha: 1)
navigationController?.navigationBar.barTintColor = UIColor(displayP3Red: 255/255, green: 206/255, blue: 24/255, alpha: 1)
} else {
navigationController?.navigationBar.isTranslucent = true
navigationController?.navigationBar.setBackgroundImage(backgroundImage, for: .default)
navigationController?.navigationBar.backgroundColor = .clear
navigationController?.navigationBar.barTintColor = .clear
}
Однако следует помнить одну важную вещь - нажать эту кнопку в раскадровке. У меня долгое время была проблема с прыгающим дисплеем. Убедитесь, что вы установили это:
Затем, когда вы изменяете прозрачность панели навигации, это не приведет к скачку представлений, поскольку представления расширяются до самого верха, независимо от видимости панели навигации.