web-dev-qa-db-ja.com

AppDelegateからUINavigationBarの背景色を変更する方法

UINavigationBar背景画像を変更する方法を知っています

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];

そして、各Views.....内でバーを異なる色に設定する方法を知っています。今度は背景色を変更したいですイメージを使用せずにからapp delegate。各ビューから毎回設定したくないし、CGRectを書きたくない。

[[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];を試しましたが、機能せず、アプリデリゲートで機能するコードを見つけることができません。

誰かが私を正しい方向に向けてくれますか?

87
Jonathan Thurft

[[UINavigationBar appearance] setTintColor:myColor];を使用できます

IOS 7以降では、[[UINavigationBar appearance] setBarTintColor:myColor];[[UINavigationBar appearance] setTranslucent:NO]を設定する必要があります。

[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];
196
Seb Thiebaud

色合いではなく背景色を変更するには、次のコードを使用します。

[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
[self.navigationController.navigationBar setTranslucent:NO];
102
LJ1

IOS 7でこれを行うには:

[[UINavigationBar appearance] setBarTintColor:myColor];
18
Lasse Bunk

Swift構文:

    UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color

AppDelegate didFinishLaunchingWithOptionsに追加するだけで、アプリ全体に保持されます

14
Dustin Williams

これはXcode 6.3.1で簡単に行えます。ドキュメントアウトラインでナビゲーションバーを選択します。属性インスペクターを選択します。半透明のチェックを外します。バーの色合いを希望の色に設定します。できた!

6
ronm333

Swift

self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false
5
Hemang

他の回答が言及しているように、setTintColor:を使用できますが、単色が必要であり、色合いを設定することはできません。

解決策は、プログラムで画像を作成し、その画像をUIAppearanceを介してすべてのナビゲーションバーの背景画像として設定することです。画像のサイズについて、1x1ピクセルの画像が機能するかどうか、またはナビゲーションバーの正確なサイズが必要かどうかはわかりません。 この質問 の2番目の答えを確認して、作成方法を確認してください。画像。

アドバイスとして、私はアプリのデリゲートをこれらのタイプのもので「オーバーロード」するのは好きではありません。私がしがちなのは、AppearanceConfigurationという名前のクラスを作成し、パブリックメソッドconfigureAppearanceを1つだけ使用して、必要なUIAppearanceをすべて設定し、アプリデリゲートからそのメソッドを呼び出すことです。

3
e1985

任意のView Controllerでこのコードを使用して、UINavigationの背景色を設定できます

self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
2
amar

Swift 4.2およびXcode 10.1で

ナビゲーションバーの色をAppDelegateからプロジェクト全体に直接変更できます。

didFinishLaunchingWithOptions launchOptions:で以下のコード行に書き込みます

UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)

ここに

tintColorは、戻るボタンやメニュー行の画像などの背景画像を設定するためのものです(以下の左右のメニュー画像を参照)

barTintColorはナビゲーションバーの背景色用です

特定のView Controllerのナビゲーションバーの色を設定する場合は、viewDidLoad()の以下のコードを記述します

//Add navigation bar colour
navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
navigationController?.navigationBar.tintColor = UIColor.white

enter image description here

0
iOS