SwiftUI LazyHGrid, LazyVGrid

황인성·2025년 1월 15일

iOS

목록 보기
3/24
post-thumbnail

GridItem

  • GridItem에서 지정한 길이는 LazyHGrid는 세로 길이, LazyVGrid는 가로 길이이다
  • .fixed는 고정된 값
  • .flexible은 상황에 따라 길이만 변한다
  • .adaptive는 상황에 따라 길이와 배열된 개수도 바뀐다
let gridItem = GridItem(.fixed(10))
let gridItem = GridItem(.flexible(minimum: 20, maximum: 80), spacing: 50, alignment: .center)
let gridItem = GridItem(.adaptive(minimum: 90, maximum: 200))

LazyHGrid

  • rows라는 옵션은 가로줄의 개수를 정한다
struct LazyHGrid: View {
    var body: some View {
        VStack {
            ScrollView(.horizontal) {
                let gridItem = GridItem(.flexible(minimum: 20, maximum: 80), spacing: 50, alignment: .center)
//                let gridItem = GridItem(.adaptive(minimum: 90, maximum: 200))
                
                LazyHGrid(rows: [gridItem, gridItem], alignment: .top, spacing: 10) {
                        ForEach(0 ..< 50) { item in
                            Text("\(item)")
                                .font(.system(size: 70))
                        }
                }
            }
        }
    }
}
  • 왼쪽이 .flexible, 오른쪽이 .adaptive

LazyVGrid

  • columns라는 옵션은 세로줄의 개수를 정한다
struct LazyVGrid: View {
    var body: some View {
        ScrollView {
            let gridItem = GridItem(.flexible(minimum: 20, maximum: 100), spacing: 50, alignment: .center)
//            let gridItem = GridItem(.adaptive(minimum: 90, maximum: 200))
            
            LazyVGrid(columns: [gridItem, gridItem], alignment: .center, spacing: 24) {
//            LazyVGrid(columns: [gridItem], alignment: .center, spacing: 24) {
                ForEach(0 ..< 50) { item in
                    Text("\(item)")
                        .font(.system(size: 70))
                }
            }
        }
    }
}
  • 왼쪽이 .flexible, 오른쪽이 .adaptive

profile
iOS, Spring developer

0개의 댓글