[SwiftUI]ヘッダーとフッターを作る

swift

SwiftUIでヘッダーとフッター、(ナビゲーションバー)を作る方法をメモ。

ナビゲーションバー

.toolbarで囲んで、その中にToolbarItemを配置し作成。

具体的には以下のようなコードになる。

.toolobar {
    ToolbarItem(placement: .navigationBarLeading) {
        Button(action: {}) {
            Image(systemName: "magnifying glass")
        }
    }
    ToolbarItem(placement: .navigationBarLeading) {
        Button(action: {}) {
            Image(systemName: "trash")
        }
    }
}

参考:https://capibara1969.com/3045/

ナビゲーションタイトル

ナビゲーションタイトルを表示するには、以下のコードで実装する。

.navigationBarTitle(Text("Navigation"))
.navigationBarTitleDisplayMode(.inline)
.toolbar { 略

.navigationBarTitleDisplayMode(.inline)を取ると以下のようになる。

戻るボタンに文字を入れたくない

ところで上記コードだとナビゲーションタイトルに「Navigation」の文言が入っている。

これはページ遷移時の戻るボタンにも反映されるよう。

文字がない状態で、<だけの表示にしたい。その場合は、文言をブランクにすればいいみたい。

.navigationBarTitle(Text(""))

フッター固定表示のバー

フッター固定表示の場合、ToolbarItem(placement)の引数を変えてやるだけでOK。

具体的には以下のようなコードになる。

.toolbar {
    ToolbarItem(placement: .bottomBar) {
        Button(action: {}) {
            Label("送信", systemImage: "pipeline")
        }
    }
}

とろこで、フッター固定でアイコンを使用する場合、systemImage: となっている。

ナビゲーションの場合はsystemName:

試しにそれぞれで入れ替えてもみたが、エラーが発生した。

複数のボタンを横一列に表示したい

よくあるアプリデザインとしては、フッター固定バーに横一列にボタンを配列するやつ。

UX的にも使いやすいデザインだと思う。

その場合は、ToolbarItemGroupで囲んでやればOK。

ToolbarItemGroup(placement: .bottomBar) {
    Button(action: {}) {
        Button("中央ボタン") {}
        Spacer()
        Button("中央ボタン") {}
        Spacer()
        Button("右ボタン"){}
    }
}

アイコンの下に文字を表示させたい

HStackで囲んで上がアイコン、下が文字というように配置できる。

Button(action: {}) {
    VStack {
        Label("送信", systemImage: "square.and.arrow.up")
        Text("ボタン").font(.caption2)
    }
}

参考:https://qiita.com/Masataka-n/items/760b56807322478285b6



カテゴリー