【SwiftUI】NavigationView使用時のタイトルのカスタマイズ

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

SwiftUIにおいて画面タイトルを表示する方法はいくつかありますが、NavigationView使用時は、navigationTitleモディファイアを使用することができます。

サンプルコード

.navigationTitleで表示したいタイトルの文字を表示します。

import SwiftUI

struct TitleSample: View {
    var body: some View {
        NavigationView {
            Text("Hello, World!")
                .navigationTitle("Title")
                .navigationBarTitleDisplayMode(.large)
        }
    }
}

navigationBarDisplayModeの指定内容

navigationBarDisplayModeモディファイアでタイトルの表示方法を指定できます。

.automatic表示モードを継承する
.inlineナヴィゲーションバー内に表示する
.large大きくタイトルを表示する

.large

.inline

タイトルの色変更

タイトルの色を変更する際は、UINavigationBarクラスを使用することで変更が可能です。

以下はnavigationBarTitleDisplayModeが.largeの場合の設定方法です。

navigationBarAppearance.largeTitleTextAttributes

.inlineを指定している場合は、以下のとおり置き換えます。

navigationBarAppearance.titleTextAttributes
import SwiftUI

struct TitleSample: View {
    init() {
        //インスタンス生成
        let navigationBarAppearance = UINavigationBarAppearance()
        //largeTitleの属性を設定
        navigationBarAppearance.configureWithOpaqueBackground()
        navigationBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.blue, .font : UIFont.systemFont(ofSize: 40, weight: .bold)]
        //上記で生成したインスタンスを設定
        UINavigationBar.appearance().standardAppearance = navigationBarAppearance
    }
    var body: some View {
        NavigationView {
            VStack {
            Text("Hello, World!")
                .navigationTitle("Title")
                .navigationBarTitleDisplayMode(.large)
            }
        }
    }
}
タイトルとURLをコピーしました