【Swift UIKit】ナビゲーションバーの背景色やボタン色を変更する方法!

この記事からわかること
- SwiftのUIKitでNavigationBarの背景色を変更する方法
- ボタンの色を変えるには?
- UINavigationBarAppearanceクラスの使い方
index
[open]
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
SwiftのUIKitでコードからNavigationBar(ナビゲーションバー)の色を変更をする方法をまとめていきます。この記事ではUINavigationControllerの使い方は解説していないので以下記事を参考にしてください。
ナビゲーションバーに背景色を変更する方法

UINavigationController
のナビゲーションバーの色を変更するにはUINavigationBarAppearance
クラスのbackgroundColor
プロパティを変更してnavigationBar
に以下のように設定します。
barTintColorは期待通りに動作しない
昔の実装ではbarTintColor
に直接色を渡すことで変更できていましたが、現在では期待通りに動作しないので注意してください。
タイトル(文字)の色を変更する

ナビゲーションバーに表示されるタイトルの文字色を変更したい場合はUINavigationBarAppearance
クラスのtitleTextAttributes
プロパティを変更して反映させます。
ボタンの文字色を変更する

ナビゲーションバーに表示されるボタンの文字色を変更したい場合はUINavigationBarAppearance
クラスのbuttonAppearance
>normal
>titleTextAttributes
プロパティを変更して反映させます。
しかしこの実装方法ではデフォルトの「戻る」ボタンなどアイコンと文字が表示されているボタンは文字のみ色が変わってしまいます。

デフォルトの「戻る」ボタンの色を変更する
デフォルトの「戻る」ボタンの色をアイコンも含めて変更するにはnavigationBar
>tintColor
プロパティの値を変更すればOKです。
これでアイコンとテキスト両方の色が変化します。またカスタムでUIBarButtonItem
を追加している場合も全てに色の変化が適応されます。
カスタムボタン1つ1つの色を変更する
カスタムボタンの色を一括ではなく1つ1つ変更したい場合はUIBarButtonItem
のtintColor
で変更することで実装できます。
UIKitで変更したい場合
おすすめ記事:【Swift UI】ナビゲーションバーの背景色を変更する方法!toolbarBackground
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。