切换导航栏背景图像/颜色

时间:2017-02-21 15:43:05

标签: ios uinavigationbar

我的应用中的一个场景应该有透明的导航栏,其他的 - 不是。

因此,当进入场景时,我正在尝试获取当前导航栏的属性并在退出时恢复它们。

- (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。

那么,我怎样才能达到预期的效果呢?

1 个答案:

答案 0 :(得分:0)

所以,这个问题原来是duplicate

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

我只是在UINavigationControllerDelegate的navigationController:willShowViewController:animated:方法中进行所有装饰。