2012-02-22 89 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