2

私は、アプリケーションの異なるナビゲーションバーの背景色を設定する方法を見つけようとしています。私はdrawRectをオーバーライドするつもりはありません:これはアプリ全体にグローバルに適用されるためです。また、tintcolorプロパティを使用すると、ナビゲーションバー項目のみに適用されるため、ヘルプが得られません。drawRectをオーバーライドせずにuinavigationbarの背景色を変更する方法:

self.navigationController.navigationBar.tintColor = [UIColor greenColor]; 

私は数日間グーグルで行っており、この問題の解決策を見つけることはできません。どうしてそんなにシンプルなものが来るの?なぜそれがuinavbarのプロパティではないのかわかりません...

誰かが簡単な解決策で助けてください...ありがとう!

答えて

1

サブクラスUINavigationBarを上書きしてdrawRectを上書きし、異なる色を使用する場所でのみサブクラスを使用します。 (また、サブクラスを初期化するときに色を渡す方法や、さまざまな色がたくさんある場合は何かを使うことができます)。

+1

ここで私はそれを行うべきですか?各ビューコントローラの下に? – TommyG

+0

iOS7のdrawRectをオーバーライドするといくつかの問題が発生します。参照:http://stackoverflow.com/questions/19523432/drawing-in-custom-uinavigationbar-attached-to-top –

1

あなたがself.navBarと言うとき何が起こるかsetTintColor:[UIColor greenColor]];各ViewのviewDidLoadに格納されます。何のコンテンツプロパティはありません前に訴えてたようIBOutlet UINavigationBarは、インターフェイスビルダー

+0

イメージを変更するのではなく、色を変更します。これをどのように色で適用できますか? – TommyG

+0

ところで、そのようなものはありません。... – TommyG

+0

まず、私はIBを使用していません。第二に、私はそれを書くとき、それはナビゲーションバー項目の色を変更するだけです。一般に、TintColorはナビゲーションバー項目の色のみを変更するためのものです。上記のとおり、まさに私の問題です。 – TommyG

6
#import <QuartzCore/QuartzCore.h> 

self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"navigationBarBackgroundImage"].CGImage; 

self.navigationController.navigationBar.tintColor = [UIColor orangeColor]; 

にナビゲーションバーにリンクされているようナビゲーションバーが宣言されています。あなたはquartzframeworkをインポートする必要があります

+0

しかし、私はイメージを使用したくない...どのように画像なしで背景色を設定することができますし、アイテムの異なる色を持っている? – TommyG

+0

まことに、コードを見る前に自分のコードを試しましたか?これはnavigationBarの色合いを設定する方法です。最初にこのコードを試して、orangeColorまたはgreenColorを取得しているかどうかを確認します。 –

+0

また、self.navigationController.navigationBar.layer.contents =(id)[UIImage imageNamed:@ "navigationBarBackgroundImage"]。CGImage; コンパイルされません - キャストエラーのようです。 – TommyG

0

あなたが持っているコードは正しいです。ナビゲーションコントローラーを作成する場所に配置する必要があります。

1
self.navigationController.navigationBar.backgroundColor = [UIColor greenColor]; 
self.navigationController.navigationBar.tintColor = [UIColor greenColor]; 

は私にとって非常に簡単な方法です。

関連する問題