5

UINavigationBarの背景をに変更したいのですが、機能し[UIColor colorWithImage:]ません。私は何が欠けていますか?

編集:

サブクラスを作成したら、それを使用するようにUINavigationControllerをどこに設定しますか?

4

2 に答える 2

8

tintColorプロパティを使用してのを変更できますUINavigationBarが、画像を背景として設定するには、独自のUINavigationBarサブクラスを提供し、drawRect:メソッドをオーバーライドする必要があります。次に例を示します。

- (void)drawRect:(CGRect)rect {
    // Drawing code 
    UIImage *img = [UIImage imageNamed: @"background-image.png"];
    [img drawInRect:CGRectMake(0, 
                               0, 
                               self.frame.size.width, 
                               self.frame.size.height)];
}

Interface Builderを使用してUIを構築し、カスタムナビゲーションバーを使用する場合は、Interface BuilderでUINavigationBar要素を選択し、インスペクターを開き、[ID]タブで、次のようにクラスフィールドでUINavigationBarサブクラスを指定します。

カスタムUINavigationBarサブクラスを示すスクリーンショットの例

于 2010-11-30T22:07:03.297 に答える
7

ナビゲーションバーに画像を表示するには、自分で画像を描画する必要がありますが、実際にはそれほど難しくありません。これを次のように保存しますUINavigationBar+CustomBackground.m(UINavigationBarにカスタムカテゴリを追加します):

@implementation UINavigationBar (CustomBackground)

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

@end
于 2010-11-30T22:09:47.640 に答える