2017-02-21 75 views
0

我的应用程序中的一个场景应该有透明的导航栏,其他 - 不是。切换导航栏背景图像/颜色

所以,当进入场景时,我试图获取当前导航栏的属性并在退出时恢复它们。

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    navigationBarBackgroundImage = [self.navigationController.navigationBar backgroundImageForBarMetrics:UIBarMetricsDefault]; 
    navigationBarShadowImage = self.navigationController.navigationBar.shadowImage; 

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage = [UIImage new]; 
    self.navigationController.navigationBar.translucent = YES; 
} 

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    [self.navigationController.navigationBar setBackgroundImage:navigationBarBackgroundImage forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage = navigationBarShadowImage; 
    self.navigationController.navigationBar.translucent = NO; 
} 

突然,它停止工作......现在,我得到NULL的背景和阴影图像。

那么,我该如何达到预期的效果呢?

回答

0

所以,这个问题竟然是一个duplicate

我仍然无法理解为什么导航栏没有从视图控制器恢复...

我只是做在UINavigationControllerDelegate的navigationController:willShowViewController:animated:方法都装饰的东西。