自定义导航栏iOS 5兼容性

问题描述:

我试图用自定义导航栏实现项目;但是,以下代码:自定义导航栏iOS 5兼容性

@implementation UINavigationBar (CustomImage) 

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

不适用于iOS 5.我使用的是Xcode 4.2。

问题:如何实现自定义导航栏而不影响以上版本的代码的使用(< iOS 5)?

任何帮助,将不胜感激。 :)

我终于明白了......这可能会帮助其他人实现这一点。

@implementation UINavigationBar (CustomImage) 

// Set the navigation bar background 
- (UIImage *)barBackground{ 
    UIImage *image = [UIImage imageNamed:@"TopBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height + 1)]; 
    return image; 
} 

- (void)didMoveToSuperview{ 
    // Applies to iOS 5 
    if ([self respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) 
    { 
     [self setBackgroundImage:[self barBackground] forBarMetrics:UIBarMetricsDefault]; 
    } 
} 

// This doesn't work on iOS5 but is needed for iOS4 and earlier 
- (void)drawRect:(CGRect)rect 
{ 
    // Draw the image 
    [[self barBackground] drawInRect:rect]; 
} 
@end