2012-01-07 9 views
0

私は以下のコード・スニペットを持っている:私はそれを置くiPhoneのナビゲーションバーをXcodeでどのようにカスタマイズできますか?

1)

[[UINavigationBar appearance] setBackgroundImage:myImage forBarMetrics:UIBarMetricsDefault]; 

?私はそれを置く

または2)

@implementation UINavigationBar (BackgroundImage) 
//This overridden implementation will patch up the NavBar with a custom Image instead of the title 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"NavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 

私はviewcontrollerにナビゲーションバーを追加しようとしましたが、これらのコードをどこに配置するのか正確にはわかりません。

+0

また、あなたがカスタマイズする必要があるだろうか尋ねる、用ナビ全色/バー/ titleImage ...等を変更すると言うことができます – Splendid

+0

質問が重複しているようで、次のスレッドを参照することができます - http://stackoverflow.com/questions/704558/custom-uinavigationbar-background – rishi

答えて

1

スニペット1はiOS 5.0のみです。ナビゲーションバーが作成される前にそれをどこかに置いてapplicationDidFinishLaunching:のようにします。詳細についてはこちらをご覧ください:

スニペット2は、あなたがiOSの5.0の前に行う必要があるために使用されるものです。それはUINavigationBarのカテゴリです。以前はカテゴリ内でdrawRect:を上書きすることは実際には見ていませんが、動作するように見えます。プロジェクト内のカテゴリをUINavigationBarに作成し、そのコードを追加するだけです。だから、のようなもの:

UINavigationBar+MyCategory.h

@interface UINavigationBar (MyCategory) 
- (void)drawRect:(CGRect)rect; 
@end 

UINavigationBar+MyCategory.m

#import "UINavigationBar+MyCategory.h" 

@implementation UINavigationBar (MyCategory) 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"NavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 
+0

'.h'ファイルに' drawRect'を入れる必要はありません。それは公開されておらず、直接呼び出されるべきではありません。 – Mundi

+0

私は目標-cにはかなり新しく、残念ながらカテゴリを使用したことはないので、基本的に 'UINavigationBar + MyCategory.h'という新しいクラスのUINavigationBarを作成する必要がありますか? –

+0

Objective-Cのカテゴリ(WikipediaやCocoa Dev Centralを試してみよう)を読んでみることをお勧めします。私が示したのは、作成してプロジェクトに追加する2つのファイル*です。 – mattjgalloway

関連する問題