現在SwiftUIを勉強中なので、さまざまなUIを実装しています。
画面サイズを取得して設定する練習として
SwiftUIでLazyVGridを使用して横幅に対して高さが1.2倍セルを表示する実装をしてみました。
Xcode Version 14.2
LazyVGridSumple.swift
struct LazyVGridSumple: View {
var body: some View {
let deviceWidth = UIScreen.main.bounds.width
let grids = Array(repeating: GridItem(.fixed((deviceWidth - 32)/3),spacing: 8.0), count: 3
)
ScrollView() {
LazyVGrid(columns: grids) {
ForEach((1...50), id: \.self) { num in
Text("\((deviceWidth - 32)/3)")
.frame(width:(deviceWidth - 32) / 3,height: ((deviceWidth - 32)/3) * 1.2)
.background(Color.green)
}
}
}
}
}
内容としては
let deviceWidth = UIScreen.main.bounds.width
で横幅を取得します
32という数字は左右のスペースとして8開けたいので8×4で32です
※数字系は定数で定義したほうが良いです。。
あとはリスト内のテキストの大きさを横幅からスペースを引いた数を表示するセルの数、今回は3で割っています。