iOS动态更改UINavigationBar背景与图像

时间:2011-08-08 06:18:24

标签: iphone ios uinavigationbar

我已阅读this并更改了UINavigationBar的背景资料:

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"top-with-logo.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

你看,我添加了一个名为 top-with-logo.png 的图像,我想通过添加名为 top-without-logo.png <的图像来更改背景视图/ em>的。但上面的代码将永远改变背景,我不能再改变了。你知道吗?

非常感谢你。

2 个答案:

答案 0 :(得分:1)

我不确定我理解你的意思,但你可以在你的应用代表上放置一个布尔值。然后在函数中加载top-with-logo.png如果是真/假,如果是另一个值,则加载top-without-logo.png。然后,当您想要更改徽标时,只需更改布尔值,并在navigationBar上调用setNeedsDisplay。

如果你使用xib文件,你也可以继承UINavigationBar,而不是使用一个catagory你覆盖drawRect函数并将变量作为一个实例变量作为子类,我相信它更干净,但你只能设置在Interface构建器中(否则无法告诉UINavigationController为navigationBar属性使用不同的类)

答案 1 :(得分:0)

你可以使用,

UINavigationBar *navigationBar = self.navigationController.navigationBar;
UIImage *image = [UIImage imageNamed: @"NavBar-Wood.png"];
[navigationBar setBackgroundImage:image forBarMetrics: UIBarMetricsDefault];
self.navigationController.navigationBar.tintColor = [UIColor brownColor];