将导航栏的背景图像还原为默认值

首先,我将导航栏的背景设置为半透明。

barImage=[[self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault] copy];//barImage is a UIImage point [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [UIImage new]; 

它运作良好。 现在我需要将导航栏的背景图像恢复为默认值。

 - (void)dealloc { [self.navigationController.navigationBar setBackgroundImage:barImage forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = nil; } 

这不起作用。 我该怎么办?

不确定你是否仍然坚持这一点,但这里是反转效果的代码。 我借用了导航控制器,并将所有内容复制到原始导航控制器上。

  UINavigationController *tempNavigationController = [[UINavigationController alloc]initWithRootViewController:[[UIViewController alloc]init]]; [self.navigationController.navigationBar setBackgroundImage:[tempNavigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [tempNavigationController.navigationBar shadowImage]; self.navigationController.navigationBar.translucent = YES; self.navigationController.view.backgroundColor = tempNavigationController.view.backgroundColor; tempNavigationController = nil;