5

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

编辑:

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

4

2 回答 2

8

您可以使用该tintColor属性来更改a的颜色UINavigationBar,但要将图像设置为背景,您必须提供自己的UINavigationBar子类并覆盖该drawRect:方法,例如:

- (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)];
}

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

显示自定义 UINavigationBar 子类的示例屏幕截图

于 2010-11-30T22:07:03.297 回答
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
于 2010-11-30T22:09:47.640 回答