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; } 

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

如果您使用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]; } }