티스토리 뷰
GridItem 정의
구조체로 정의되어 있는 GridItem은 SwiftUI에서 lazy grid를 표현할때 사용되는 놈입니다. SwiftUI의 LazyHGrid, LazyVGrid는 각각 rows, columns 라는 인자를 넣어서 생성, 사용하게 되는데요. 이떄 rows, columns의 타입이 [GridItem]입니다. GridView 생성 시에 필수적으로 사용해야 하는 놈인 것입니다.
SwiftUI를 사용 가능한 iOS 14 이상에서 GridView 레이아웃 속성으로 사용되는 GridItem을 지원하고 있습니다.
GridItem Overview
LazyHGrid, LazyVGrid의 레이아웃을 지정할때 GridItem의 배열, [GridItem]을 사용할 수 있습니다. GridItem에서는 size, spacing, alignment 등의 세부 옵션 지정이 가능한데, size 옵션으로는 adaptive, fixed, flexible 세가지가 있습니다.
보통 LazyHGrid의 경우 rows로, LazyVGrid는 columns로 [GridItem]을 지정해서 레이아웃을 설정할 수 있습니다. 이때 일반적으로 LazyHGrid는 ScrollView(.horizontal)과, LazyVGrid는 ScrollView(.vertical)과 사용하게 되는데, 위 코드는 전자의 예시가 되겠네요.
좌우 스크롤이 가능한 GridView이며, LazyHGrid의 rows 설정에 따라 위에서부터 차례대로 30, 60, 90, 10의 크기, 1, 10, 20, 50의 spacing 값을 갖게 됩니다. 위 코드의 결과를 이어서 보겠습니다~!
GridItem 배열로 지정했던 대로, row 행을 보면, 위에서 아래로 갈수록 spacing이 커지는 것을 볼 수 있어요. 크기도 제각각이죠. 하지만 column 열로 보면, 일관적인 크기를 보여줍니다. LazyVGrid의 경우 이와 반대라고 보면 되고요.
지금은 size를 .fixed 옵션으로 지정했는데 flexible, adaptive로 지정하는 경우, 빈 영역을 필요에 따라 채우거나 최대 크기를 제한하는 레이아웃을 구현할 수도 있습니다.
LazyVGrid는 일반적으로 내부의 모든 View를 접근할 수 없습니다. 스크롤이 될때 새롭게 보여져야할 Cell을 생성하는 원리이기 때문입니다. 또한 LazyVGrid에 정의된 Sub View의 순서에 맞는 데이터를 참조해서 그에 맞는 UI를 보여줍니다. UIKit의 스크롤뷰, 컬렉션뷰와 유사한 UI를 구현해야할때 사용될 수 있는 UI로 많이 익숙해져야 겠습니다.
지금까지 GridView 레이아웃 속성으로 사용되는 GridItem에 대해 개발자 문서를 읽으며 알아보았습니다~!
개발자 문서 Reference
GridItem | Apple Developer Documentation
A description of a row or a column in a lazy grid.
developer.apple.com
'iOS 개발 > 개발자문서 정보' 카테고리의 다른 글
Swift Concurrency, TaskGroup 효율적인 동시성 제어방법 (0) | 2025.03.17 |
---|---|
UIKit 버튼 설정, UIButtonConfiguration 개발자문서 개요 (2) | 2024.09.06 |
Swift Conrreucy, AsyncSequence 준수하는 AsyncStream 사용방법 (7) | 2023.12.03 |
Swift Concurrency Data Race 해결, Sendable protocol 개요 (0) | 2023.11.26 |
iOS Foundation, NSObject가 채택하는 NSObjectProtocol (0) | 2023.03.04 |
- Total
- Today
- Yesterday
- 알고리즘문제
- swift 문자열
- 백준swift
- SwiftUI
- swift알고리즘
- Collection
- 컬렉션
- 부스트코스
- 스위프트
- Protocol
- 알고리즘
- 프로그래머스
- swift reduce
- Swift 알고리즘
- 김프매매
- createML
- 개발자문서
- swift
- 백준알고리즘
- swift언어
- 자연어처리
- publisher
- swift 기초
- CoreML
- 프로그래머스swift
- 프로토콜
- ios
- swift문제
- uikit
- swift string
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |