40

私のアプリでは、ナビゲーションバーに画像(ロゴ)を追加したいと思います。私はXCodeの4.2とiOS 5iPhoneアプリでUINavigationBarに画像を追加する方法

私はUINavigationBarを知っているに取り組んでいます、UIToolBarだからiOSの4.2 UINavigationBarコードは、私が表示画像をサポートしたいのiOS 5に

を動作しませんのiOS 5に変更されましたUINavigationBarは4.2と5の両方のバージョンです。

UINavigationBarの画像を表示するには、下のスクリーンショットのようにします。

Navigation bar image

この点で助けと任意のサンプルコードがある場合は、私にはその非常に役立つことを意味してください。

ありがとうございました!

答えて

76

これを行う1つの方法は、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の両方のためにこの作品?それはUINavigationbarの背景画像ではなく追加しようとしている 'clingle'ロゴですか? – Illep

+0

少なくともシミュレータ上で動作します。そして、私はそれがすべきではない理由を見ない。私はあなたの2番目の質問を理解していませんでした。ありがとう。 – barley

+0

あなたの例でアイテムオブジェクトがリリースされていないことに気付きました。 –

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 
    } 
} 
関連する問題