LazyVGridは表の作成などに用いると便利なViewです。
以下のようにcolumnsプロパティに表示する列の設定をすると、コンテンツ部分を列の設定に従って表示してくれます。
シンプルなコード例
import SwiftUI
struct LazyVGridSample: View {
//列に関する設定
let columns: [GridItem] = Array(repeating: GridItem(.flexible()), count: 7)
var body: some View {
VStack {
ScrollView {
Text("LazyVGrid")
LazyVGrid(columns: columns) {
//コンテンツ部分
ForEach(1...31, id: \.self) { value in
Text(String(format: "%d", value))
.font(.largeTitle)
}
}
}
}
}
}
LazyVGridのパラメータ
columns | GridItem型の配列を指定する。GridItem自体にもパラメータがある。 |
alignment | グリッド内に表示する項目の配置、中央寄せ(.center)、右寄せ(.trailing)、左寄せ(.leading)が設定可能 |
spacing | 行と行の間のスペースの高さ |
pinnedViews | スクロールした時にピン留めしたいヘッダービュー(.sectionHeaders)やフッタービュー(.sectionFooters) |
GridItemのパラメータ
size | GridItemのサイズ。以下の3つから指定できます。 ・固定のサイズ(.fixed) ・最小と最大で設定した値の範囲内で画面に収まるサイズ(.flexible) ・使い所がわからなかった(.adaptive) |
| spacing | GridItem間のサイズ |
alignment | GridItemの配置 |
パラメータを色々変更したコード例
import SwiftUI
struct LazyVGridSample: View {
//列に関する設定
let columns: [GridItem] = Array(repeating: GridItem(
//GridItemの初期化
.flexible(minimum: 10, maximum: 100),
spacing: 10,
alignment: .bottomLeading),
count: 7)
var body: some View {
VStack {
ScrollView {
//Text("LazyVGrid")
LazyVGrid(columns: columns, alignment: .center, spacing: 50, pinnedViews: .sectionFooters ) {
Section(header: Text("LazyVGrid")) {
//コンテンツ部分
ForEach(1...31, id: \.self) { value in
Text(String(format: "%d", value))
.font(.largeTitle)
}
}
}
}
}
}
}

