Восстановить фоновое изображение navigationBar после установки его на [UIImage new]
Мне понадобилась полностью прозрачная панель навигации для mapView, поэтому я сделал это:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
Это возвращает желаемый эффект, как показано здесь:
![enter image description here]()
Теперь у меня есть проблема, когда я перехожу к любому другому, потому что мой navigationBar остается прозрачным:
![enter image description here]()
Как восстановить настройки по умолчанию для background_mage и shadowImage navigationBar?
Ответы
Ответ 1
Установите nil для изображения навигации. Контроллер на viewWillDisappear
на экране карты
Установите этот два метода в вашем mapview
MapView ого
-(void)viewWillAppear:(BOOL)animated{
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
}
-(void)viewWillDisappear:(BOOL)animated{
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:nil];
}
Ответ 2
Для Swift 3:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = nil
}