2014-06-19 64 views
2

首先,我将导航栏的背景设置为半透明。将导航栏的背景图恢复为默认

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; 

} 

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

回答

1

不知道你是否仍然坚持这一点,但这里是代码来扭转效应。我借用了一个导航控制器,并将所有内容复制到原始导航控制器。

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;