教育148875 views
高校化学2913383 views
LaTeX957300 views
高校物理158224 views
小学算数1194618 views
中学社会667106 views
いろは2986023 views
高校国語785655 views
Computer365120 views
小学社会308636 views
Help
Tools

English

ListStyle の種類

SwiftUI の List は listStyle モディファイアでさまざまな見た目に変更できます。用途やプラットフォームに応じて適切なスタイルを選びましょう。

主要な ListStyle

List {
    Text("項目1")
    Text("項目2")
    Text("項目3")
}
.listStyle(.insetGrouped)  // スタイルを指定

各スタイルの特徴

.automatic

プラットフォームとコンテキストに応じた標準スタイル。iOS では通常 .insetGrouped 相当になる。

.plain

区切り線のみのシンプルなスタイル。セクションヘッダーは上部に固定される。UITableView の .plain に相当。

.inset

左右にマージンがあるシンプルなスタイル。macOS でよく使われる。

.grouped

グループ化されたスタイル。iOS 13 時代の設定アプリ風。現在は .insetGrouped の方が主流。

.insetGrouped

角丸のカードのようなグループスタイル。iOS の設定アプリで使われている見た目。Section との相性が良い。

.sidebar

macOS や iPadOS のサイドバー向けスタイル。NavigationSplitView のサイドバーで使用。

スタイルの比較

struct StyleComparisonView: View {
    var body: some View {
        TabView {
            sampleList
                .listStyle(.plain)
                .tabItem { Text("Plain") }
            
            sampleList
                .listStyle(.insetGrouped)
                .tabItem { Text("InsetGrouped") }
            
            sampleList
                .listStyle(.inset)
                .tabItem { Text("Inset") }
        }
    }
    
    var sampleList: some View {
        List {
            Section("セクション1") {
                Text("項目A")
                Text("項目B")
            }
            Section("セクション2") {
                Text("項目C")
                Text("項目D")
            }
        }
    }
}

使い分けの指針

スタイル用途
.plainシンプルな一覧表示、メッセージリスト
.insetGrouped設定画面、フォーム
.sidebarサイドバーナビゲーション(iPad/Mac)
.automaticデフォルト、特にこだわりがない場合

iOS と macOS の違い

同じスタイルでも、プラットフォームによって見た目が異なることがあります。.automatic を使うと、各プラットフォームに最適なスタイルが自動的に選ばれます。

List {
    ForEach(1...10, id: \.self) { i in
        Text("項目 \(i)")
    }
}
.listStyle(.automatic)  // プラットフォームに任せる

Section との組み合わせ

スタイルによって Section の見た目も変わります。特に .insetGrouped.plain では大きく異なります。

.insetGrouped + Section

各セクションがカード状に分離され、間にスペースが入る

.plain + Section

セクションヘッダーはスクロール時に上部に固定され、区切り線は連続する

アプリの設計に合わせて ListStyle を選択することで、ユーザーにとって使いやすい UI を構築できます。設定画面には .insetGrouped、データ一覧には .plain というように、コンテンツの性質に応じて使い分けましょう。