Iphone 将导航栏背景更改为图像

Iphone 将导航栏背景更改为图像,iphone,Iphone,我在IOS 4+上尝试了这段代码,它工作得非常完美,但直到我的队友在IOS 5+上测试了它。这是密码 @implementation UINavigationBar (CustomImage) // Set the navigation bar background - (void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed:@"background.png"]; [image drawInRect:

我在IOS 4+上尝试了这段代码,它工作得非常完美,但直到我的队友在IOS 5+上测试了它。这是密码

@implementation UINavigationBar (CustomImage)

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

@end
我需要一个适用于IOS 4+和IOS 5+的代码,请帮助我。

请尝试此代码:

@implementation UINavigationBar (CustomImage)

// Set bar background
- (UIImage *)customBackground {
    UIImage *image = [UIImage imageNamed:@"background.png"];
    return image;
}

- (void)didMoveToSuperview {
    // Applies to iOS5 only
    if ([self respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) {
        [self setBackgroundImage:[self customBackground] forBarMetrics:UIBarMetricsDefault];
    }
}

// Set the navigation bar background
- (void)drawRect:(CGRect)rect {
    [[self customBackground] drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end
setBackgroundImage:forBarMetrics:适用于iOS5