针对不同视图的不同UINavigationBar背景

时间:2014-08-21 16:45:44

标签: ios objective-c uinavigationbar appearance

我在代码中创建我的UINavigationBar:

// init and add root navigation controller to view
_rootNavigationController = [[UINavigationController alloc] init];
[_rootView.contentContainer addSubview:_rootNavigationController.view];
_rootNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

然后在某个UIViewController里面我希望UINavigationBar有一个清晰的背景,所以我使用这个代码有效:

UINavigationBar *navBar = self.navigationController.navigationBar;
navBar.topItem.title = @"";
[navBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[navBar setShadowImage:[UIImage new]];
[navBar setTranslucent:YES];
[navBar setTintColor:[[AVOThemeManager sharedTheme] contentBackButtonColor]];

一旦用户通过按回来离开此页面,我想将我的UINavigationBar返回到它原始的样子,所以我正在尝试这个:

- (void)viewDidDisappear:(BOOL)animated {
    UINavigationBar *navBar = self.navigationController.navigationBar;
    [navBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    [navBar setShadowImage:nil];
    [navBar setBarStyle:UIBarStyleBlackTranslucent];
    [navBar setTranslucent:YES];
}

但这似乎不起作用。我也不想将UINavigationBar设置为新实例,然后设置属性,因为它有一个全局按钮,添加到根导航控制器中,子视图控制器不知道。< / p>

还有什么我可以尝试的吗?

1 个答案:

答案 0 :(得分:2)

发帖后,我立即找到答案。基本上不是使用viewDidDisappear,我应该使用viewWillDisappear并且它可以工作。