2012-02-22 67 views
3

我想为UINavigationBar设置背景图像。UINavigationBar的背景图像

我试图2种类型的方法,

1. [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"KnavigationBarImage.png"] forBarMetrics:UIBarMetricsDefault]; 

它在IOS 5支持,但崩溃时在IOS 4.3运行它。

2. self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"KnavigationBarImage.png"].CGImage; 

它在ios 4中正常工作,但图像不显示在ios 5 Simulator中。

我需要它应该在这两个版本4和5

请建议我工作的代码。

谢谢。

回答

3

编写一个像这样的方法来找出设备具有的操作系​​统。

static int sIsiOS5 = -1; 
+(BOOL)isIOS5 
{ 
    if(-1 == sIsiOS5) 
    { 
     sIsiOS5 = 0; 
     if([[UIScreen mainScreen] respondsToSelector:@selector(brightness)]) 
     { 
      sIsiOS5 = 1; 
     } 
    } 
    return sIsiOS5; 
} 

虽然设置图像,检查作为以下,然后设置图像。

if ([Utilities isIOS5]) { 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"KnavigationBarImage.png"] forBarMetrics:UIBarMetricsDefault]; 
} 
else 
{ 
    self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"KnavigationBarImage.png"].CGImage; 
} 
+0

谢谢Aadhira。这工作。 – Bharathi 2012-02-22 05:38:27

+0

我宁愿检查navigationBar是否响应选择器'setBackgroundImage:' – 2012-02-22 05:56:47

+0

@ThomasMüller,即使这是可能的。但我只写了一个可以在任何地方使用的通用方法。 – Ilanchezhian 2012-02-22 05:59:40

3

在我的一个应用程序中,我使用它来设置整个应用程序的导航栏图像。放在你的appdelegate文件的顶部。适用于iOS 4.3和5.0。

//custom navbar 
@implementation UINavigationBar (CustomImage) 
- (void)drawRect:(CGRect)rect 
{ 
    UIImage *image = [UIImage imageNamed: @"NavBarLogo.png"]; 
    [image drawInRect:CGRectMake(0, -1, self.frame.size.width, self.frame.size.height + 5)]; 
} 
@end