英語607877 views
ヒストリア284143 views
いろは2986023 views
MathPython491378 views
雑学1472593 views
高校化学2913383 views
高校物理158224 views
世界の国560595 views
教育148875 views
高校倫理1433119 views
Help
Tools

English

SwiftUI LabelStyle でスタイルを変える

LabelStyle を使うと、Label の表示方法を切り替えられます。アイコンのみ、タイトルのみ、あるいは両方を表示するかをコントロールできます。

ビルトインスタイル

SwiftUI には 3 つの標準スタイルが用意されています。

let label = Label("設定", systemImage: "gearshape")

VStack(spacing: 20) {
    label
        .labelStyle(.automatic)     // 自動(コンテキストに応じる)
    
    label
        .labelStyle(.titleAndIcon)  // タイトルとアイコン両方
    
    label
        .labelStyle(.titleOnly)     // タイトルのみ
    
    label
        .labelStyle(.iconOnly)      // アイコンのみ
}

コンテキストによる自動切り替え

.automatic(デフォルト)では、Label が配置される場所によって表示が変わります。

ツールバーのボタン

アイコンのみ表示されることが多い

リストの行

タイトルとアイコンの両方が表示される

親ビューでまとめて設定

複数の Label に一括でスタイルを適用できます。

VStack {
    Label("ホーム", systemImage: "house")
    Label("検索", systemImage: "magnifyingglass")
    Label("設定", systemImage: "gearshape")
}
.labelStyle(.iconOnly)

カスタム LabelStyle

独自のレイアウトを作ることもできます。

struct VerticalLabelStyle: LabelStyle {
    func makeBody(configuration: Configuration) -> some View {
        VStack(spacing: 4) {
            configuration.icon
            configuration.title
                .font(.caption)
        }
    }
}

使用例:

Label("設定", systemImage: "gearshape")
    .labelStyle(VerticalLabelStyle())

より複雑なカスタムスタイル

アイコンを右側に配置するスタイル:

struct TrailingIconLabelStyle: LabelStyle {
    func makeBody(configuration: Configuration) -> some View {
        HStack {
            configuration.title
            configuration.icon
        }
    }
}

LabelStyle を使いこなすことで、同じ Label でも場面に応じた柔軟な表示ができます。