如何更改UINavigationBar的背景?

时间:2010-11-30 22:00:03

标签: iphone ios uinavigationbar tabbar

我想将我的UINavigationBar的背景更改为[UIColor colorWithImage:],但它不起作用。我错过了什么?

修改

一旦我创建了我的子类,我在哪里设置UINavigationController来使用它?

2 个答案:

答案 0 :(得分:8)

您可以使用tintColor属性更改UINavigationBar颜色,但要将图片设置为背景,您必须提供自己的UINavigationBar drawRect: 1}}子类并覆盖- (void)drawRect:(CGRect)rect { // Drawing code UIImage *img = [UIImage imageNamed: @"background-image.png"]; [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } 方法,例如:

{{1}}

如果使用Interface Builder构建UI然后使用自定义导航栏,只需在Interface Builder中选择UINavigationBar元素,打开Inspector,然后在Identity选项卡中指定类字段中的UINavigationBar子类,如下所示: / p>

Example screenshot showing custom UINavigationBar subclass

答案 1 :(得分:7)

要在导航栏中显示图像,您必须自己绘制图像,这实际上并不难。将其另存为UINavigationBar+CustomBackground.m(它会向UINavigationBar添加自定义类别):

@implementation UINavigationBar (CustomBackground)

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"NavMain.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end