it-swarm.com.ru

Восстановите фоновое изображение navigationBar после установки [UIImage new]

Мне нужна была полностью прозрачная панель навигации для mapView, поэтому я сделал это:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];

Это возвращает желаемый эффект, как показано здесь:

enter image description here

Теперь у меня есть проблема, когда я иду на любой другой, потому что моя панель навигации остается прозрачной:

enter image description here

Как восстановить настройки по умолчанию для backgroundBmage и shadowImage панели навигации?

20
budidino

Установите 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];
}
50
Toseef Khilji

Для 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
}
7
Hapeki

кстати, вы получаете оригинальное фоновое изображение с помощью функции 

UIImageView *imageView = [self.navigationController.navigationBar
backgroundImageForBarMetrics:UIBarMetricsDefault];

и хранить изображение где-то, то вы используете

[self.navigationController.navigationBar setBackgroundImage:imageView 
forBarMetrics:UIBarMetricsDefault];

установить его обратно, но в большинстве случаев установка на ноль решит вашу проблему.

0
godmanzheng