この記事では、SwiftUIでLazyVGrid
を実装する方法について徹底解説していきたいと思います。
LazyVGridとは?
LazyVGridというのは、UIKitでいうCollectionViewみたいなものです。左上詰めで並んでいくViewのことを指します。
イメージ的には、Instagramや、PinterestなどのスクロールできるViewことです。
基本的な使い方
struct ContentView: View { private let columns: [GridItem] = Array(repeating: .init(.flexible(), spacing: 10, alignment: .center), count: 4) var body: some View { ScrollView(.vertical) { LazyVGrid(columns: columns) { ForEach((1...50), id: \.self) { index in Rectangle() .foregroundColor(.pink) .aspectRatio(contentMode: .fill) } } } } }
ちょっと複雑なので、一つ一つ丁寧に解説していきたいと思います。
まず、LazyVGrid
を使う上で必要になってくるのが、columns
です。要は列の情報です。
private let columns: [GridItem] = Array(repeating: .init(.flexible(), spacing: 10), count: 4)
一つ一つ説明していくと、
まず、repeating:
で配置を決めます。.flexible()
は可変サイズで、画面のサイズによってセルのサイズが変わります。ここを.fixed(50)
とかにすると、幅が固定されます。.adaptive()
だと最大まで大きくなります。
次に、spacing: 10
は、セルとセルの間のスペースを決められます。
次に、count: 4
というのは、4列という意味です。これを3とかにすると3列で表示されます。
そして、それらの情報をLazyVGrid
に渡してあげます。あとはForEach
で回すだけなので、わかると思います。