UINavigationBar - 设置背景图片?

时间:2012-02-16 02:46:33

标签: ios ipad uinavigationcontroller uinavigationbar

所以我有一个UINavigationController的类别,我重写了以下的init方法

- (id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
            UIImage *image = [UIImage imageNamed:@"navBar.png"];
            [[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];      
    }

        return self;
}

以下代码导致导航栏的背景图像变为空白(白色)。 图像名称正确,它存在于项目中。知道是什么导致了这个问题吗?

1 个答案:

答案 0 :(得分:4)

如果你使用iOS4,你可以覆盖 - (void)drawRect

@implementation UINavigationBar (UINavigationBarCategory)

- (void)drawRect:(CGRect)rect
{
    UIImage *navBg = [UIImage imageNamed:@"navBar.png"];
    [navBg drawInRect:rect];
}
@end

iOS 5,

if ([[UIDevice currentDevice].systemVersion floatValue] >= 5.0) {
    if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){

        UIImage *navBarImg = [UIImage imageNamed:@"navBar.png"];

        [self.navigationController.navigationBar setBackgroundImage:navBarImg forBarMetrics:UIBarMetricsDefault];

    }
}