【ツールバーのカスタマイズ】ツールバー背景やタイトルフォントの変更など

この記事は約6分で読めます。

この記事ではツールバーのカスタマイズについて紹介します。背景の変更やタイトルのフォントの変更が可能です。

ツールバー背景色の変更(toolbarBackground)

  • iOS:16.0以上
  • XCode(当サイトの環境):15.0.1

SwiftUIのtoolbarBackground修飾子は、ツールバーの背景をカスタマイズするために使用されます。
これにより、ツールバーの背景色などを簡単に設定でき、アプリケーションの外観をカスタマイズすることが可能になります。
toolbarBackgroundを使用する際は、.toolbar修飾子と組み合わせて、対象のビューに適用します。

コード例

まずはツールバーを実装します。実装したツールバーに対して”toolbarBackground”を付与したものが以下のコードです。

import SwiftUI

struct ToolbarCustom: View {
    var body: some View {
        NavigationStack {
            Text("メインコンテンツ")
                .navigationTitle("ホーム")
                .toolbar {
                    ToolbarItem(placement: .confirmationAction) {
                        Button(action: {
                            print("アクション実行")
                        }) {
                            Image(systemName: "plus")
                        }
                    }
                    ToolbarItem(placement: .destructiveAction) {
                        Button(action: {
                            print("アクション実行")
                        }) {
                            Image(systemName: "trash").foregroundColor(/*@START_MENU_TOKEN@*/.blue/*@END_MENU_TOKEN@*/)
                        }
                    }
                }
                //常時背景色を適用
                .toolbarBackground(.visible, for: .navigationBar)
                //背景色をグリーンにする
                .toolbarBackground(.green,for: .navigationBar)
        }
    }
}

注意点

以下「.visible」を付与して常時背景色を適用しないと、リストビューなどにおいて、画面をスクロールした時のみ背景色が適用されます。

toolbarBackground(.visible, for: .navigationBar)

さらに詳細は以下のページを参照してください


ツールバータイトルのフォントを変更(toolbarTitleDisplayMode)

  • iOS:17.0以上

次は“toolbarTitleDisplayMode”の機能を紹介します。この機能は、ツールバータイトルのフォントを変更することが可能です。

設定値は以下から選ぶことが可能です。

  • large
  • inlineLarge
  • inline
  • automatic

コード例

import SwiftUI

struct ToolbarTitle: View {
    var body: some View {
        NavigationStack {
            Text("メインコンテンツ")
                .navigationTitle("ホーム")
                .toolbar {
                    ToolbarItem(placement: .confirmationAction) {
                        Button(action: {
                            print("アクション実行")
                        }) {
                            Image(systemName: "plus")
                        }
                    }
                    ToolbarItem(placement: .destructiveAction) {
                        Button(action: {
                            print("アクション実行")
                        }) {
                            Image(systemName: "trash").foregroundColor(/*@START_MENU_TOKEN@*/.blue/*@END_MENU_TOKEN@*/)
                        }
                    }
                }
                // ツールバータイトルのフォントを変更
                .toolbarTitleDisplayMode(.large)
        }
    }
}

設定値ごとの見た目の変化

デフォルトのツールバータイトル
large
inlineLarge
inline
タイトルとURLをコピーしました