CollectionView는 TableView와 다르게 layout을 설정해주지 않으면 생성시 오류가 발생합니다.
CollectionView 생성자에서 인자로 받는 UICollectionViewLayout이 있습니다.
왠만한 레이아웃은 UICollectionViewLayout으로 할 수 있지 않을까? 싶었는데 CollectionView 생성 인자로 모두 들어갈 수 있다는 점에서 많이 헷갈렸습니다.
이번 기회에 정리해보고자 합니다.
UICollectionViewLayout
https://developer.apple.com/documentation/uikit/uicollectionviewlayout
UICollectionViewLayout | Apple Developer Documentation
An abstract base class for generating layout information for a collection view.
developer.apple.com
- 컬렉션 뷰의 레이아웃을 설정하기 위한 클래스 입니다.
- 셀의 위치, 추가적인 뷰와 컬렉션 뷰 안의 데코레이션 뷰를 결정하고 컬렉션뷰에 전달합니다.
- UICollectionViewLayout을 사용하기위해 서브클래싱을 진행해야합니다.
Subclassing Notes
레이아웃 객체는 컬렉션뷰 아이템의 위치, 크기, 시각적 상태등을 디자인에 맞춰서 정의합니다.
레이아웃의 뷰는 컬렉션 뷰의 datasource에 의해 생성됩니다.
- Cell 은 레이아웃에 의해 배치되는 주요 요소입니다. 각 셀은 컬렉션 안의 단일 데이터 아이템으로 나타냅니다. 사용자가 각 항목을 선택, 끌기 재정렬 할 수 있도록 interactive한 셀을 만들 수 있습니다. 컬렉션 뷰는 단일 셀 그룹을 가질 수 있고 해당 셀을 여러 섹션으로 나눌 수 있습니다. 레이아웃 객체는 컬렉션뷰의 컨텐츠영역의 셀을 정렬할 수 있습니다.
- Supplementary view 데이터를 표시하지만 사용자가 선택할 수 없습니다. Header View와 Footer View를 구성하기 위해 사용됩니다. Supplementary view는 선택적으로 사용할 수 있고, 레이아웃 객체에서 정의합니다.
- Decoration view 선택할 수 없고, 컬렉션 뷰와 데이터로 연동되지 않은 뱃지와 같은 장식품입니다. Decoration view 는 Supplementary view 와는 다른 유형입니다. Supplementary view 와 마찬가지로 선택적으로 사용할 수 있고, 사용과 배치는 레이아웃 객체에서 정의합니다.
Collection View 는 위와 같은 레이아웃 정보를 제공하는 레이아웃 객체를 호출합니다. 스크린에 표시되는 모든 셀과 뷰는 레이아웃 객체를 사용하여 배치됩니다. 마찬가지로 항목이 추가되거나 삭제될 때 해당 항목에 대한 추가적인 레이아웃 단계가 발생합니다. 그러나 컬렉션 뷰는 레이아웃을 항상 스크린에 표시되는 객체로 제한합니다.
Methods
'iOS' 카테고리의 다른 글
UIBeizerPath (0) | 2025.02.26 |
---|---|
NotificationCenter (0) | 2025.02.20 |
iOS Combine (0) | 2025.02.19 |
URLSession 번역 (0) | 2024.12.13 |
Fetching website data into memory (0) | 2024.12.10 |