40

在我的应用程序中,我想要在导航栏中添加图像(徽标)。我工作了XCode 4.2和iOS 5如何在iPhone应用程序的UINavigationBar中添加图像

我知道UINavigationBarUIToolBar已在IOS 5更改,因此iOS 4.2的代码UINavigationBar不会在iOS的5工作

我想支持显示图像在4.2和5版本中均为UINavigationBar

我想在UINavigationBar中显示图像,如下面的截图所示。

Navigation bar image

请在这方面的帮助,如果有任何示例代码意味着其对我很有帮助。

谢谢!

回答

76

要做到这一点的一种方法是使用UINavigationItem.titleViewUINavigationItem.rightBarButtonItem。就像这样:

viewController.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage2.jpg"]]];  
viewController.navigationItem.rightBarButtonItem = item;  

这里我使用UIImageView作为自定义视图,但它可以用UIButton自定义图像。

+0

使用功能的扩展协议将这项工作对于两者的iOS4和5?它是你试图添加的'clingle' Logo而不是UINavigationbar的背景图片吗? – Illep 2012-02-14 23:38:53

+0

它至少在模拟器上。我不认为它不应该有任何理由。我不明白你的第二个问题。 – barley 2012-02-16 18:21:31

+0

谢谢。但我注意到在您的示例中没有发布项目对象。 – 2012-07-05 11:48:56

32

的另一种方法,而无需使用的viewController

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

// set the image view to the title view 
self.navigationItem.titleView = imageview; 
3

斯威夫特版本: 您可以为您的视图控制器

protocol Customizable { 
    var navigationItem: UINavigationItem { get } 
} 

extension Customizable { 
    func setNavBarLogo() { 

     let logo = UIImage(named: "logo") 
     let logoImageView = UIImageView(image: logo) 

     self.navigationItem.titleView = logoImageView 
    } 
} 
相关问题