2011-12-13 198 views
4

我需要支持iOS4和iOS5。我的代碼在iOS4上運行良好,但不適用於iOS5。如何解決這個問題。將圖像添加到UINavigationBar

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"E_44.png"]]; 
imageView.frame = CGRectMake(136, 0, 52, 44); 
[self.navigationController.navigationBar insertSubview:imageView atIndex:0]; 
[imageView release]; 

回答

8

爲UINavigationBar設置自定義背景以支持iOS5和iOS4!


如你所知,直到iOS 5中出來的時候,我們用drawRect覆蓋在AppDelegate定製UINavigationBar。 但是請知道,iOS 5爲我們提供了一些新的樣式設計方法(舊的方法不起作用)。

如何構建可在iOS 4和iOS 5上使用程式設計的應用程序UINavigationBar

你必須做到兩個!

AppDelegate使用此代碼:

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
UIImage *img = [UIImage imageNamed:@"navbar.png"]; 
[img drawInRect:rect]; 
} 
@end 

,並在iOS5的viewDidLoad方法(在你的視圖實現):

if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){ 
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault]; 
} 

如果你看到了,這裏我們問導航欄將respondToSelector到避免在iOS4上崩潰!

2

這並不增加一個背景,但是這會讓你一個圖像添加到導航條

// Create your image<br> 
UIImage *image = [UIImage imageNamed: @"yourimage.png"];<br> 
UIImageView *imageview = [[UIImageView alloc] initWithImage: image]; 

// set the text view to the image view<br> 
self.navigationItem.titleView = imageView; 

希望這有助於。