我的应用程序有几个viewControllers,对于其中一些,我想在推送到导航堆栈时使用不同的导航栏背景图像。
例如,当我的mainViewController加载时,我有这个:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"Setting toolbar for iOS 5+");
UIImage * navbarImage = [UIImage imageNamed:@"navbar01.png"];
[[UINavigationBar appearance] setBackgroundImage:navbarImage forBarMetrics:UIBarMetricsDefault];
}
同样,当我的其他viewController被推送到导航堆栈时,我使用与上面相同的代码,除了使用不同的UIImage(navbar02.png)。
但是,导航栏不会与我设置的第一张图像发生变化。当出现新视图时,有没有办法更改UINavigationBar背景图像?
谢谢!
答案 0 :(得分:2)
以下是类似问题的链接:UINavigationBar setBackgroundImage: forBarMetrics: Not Working
答案是使用这个:
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
而不是您使用的代码。
答案 1 :(得分:1)
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
// NSLog(@"%f",version);
if (version >= 5.0) {
UIImage *backgroundImage = [UIImage imageNamed:@"image.png"];
[self.navigationController.navigationBar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
}
else
{
// UIImage *backgroundImage = [UIImage imageNamed:@"image.png"];
NSString *barBgPath = [[NSBundle mainBundle] pathForResource:@"NavBar" ofType:@"png"];
[self.navigationController.navigationBar.layer setContents:(id)[UIImage imageWithContentsOfFile: barBgPath].CGImage];
}
它成功地为我工作......也许它会帮助你。