私のUINavigationBarの背景を[UIColor colorWithImage:]
に変更したいのですが、動作しません。私は何が欠けていますか?UINavigationBarの背景を変更するにはどうすればよいですか?
EDIT:私はそれを使用するUINavigationControllerを設定してください、私は私のサブクラスを作成したら
、?
私のUINavigationBarの背景を[UIColor colorWithImage:]
に変更したいのですが、動作しません。私は何が欠けていますか?UINavigationBarの背景を変更するにはどうすればよいですか?
EDIT:私はそれを使用するUINavigationControllerを設定してください、私は私のサブクラスを作成したら
、?
あなたはUINavigationBar
の色を変更するtintColor
プロパティを使用することができますが、例えば、あなたがあなた自身の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)];
}
UIビルドを使用してカスタムナビゲーションバーを使用する場合は、インターフェイスビルダでUINavigationBar要素を選択し、インスペクタを開き、[ID]タブでクラスフィールドにUINavigationBarサブクラスを指定します。
ナビゲーションバーに画像を表示するには、実際にはそれほど難しくありません。 (それはUINavigationBarにカスタムカテゴリを追加します)UINavigationBar+CustomBackground.m
として保存:
@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
カテゴリを使用すると、*すべての*ナビゲーションバーの背景が取り消し不能に変更されます。あなたはサブクラスを使う方が良いです。 –
異なるビューコントローラ上に異なるナビゲーションバーが必要になるまでこのメソッドを使用しました。その後、このメソッドは残念なことに失敗します –
実際には、いくつかのクラス検出を行い、クラスに基づいて異なる動作をすることができます。あなたはまだ、しかし、デフォルトの動作を再実装する必要があります。 – Moshe
今、私はUINavigationControllerの内部を示すために、UINavigationBarを設定するのですか? – Moshe
良い質問 - それに応じて回答が修正されました。 –
純粋にコードで可能ですか?また、これはHIGを全く壊しますか? – Moshe