2017-02-21 67 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:方法都裝飾的東西。