UICollectionViewCompositionalLayout는 iOS 13에서 도입된 강력한 레이아웃 시스템으로,
컬렉션 뷰에서 복잡하고 다양한 레이아웃을 선언형 방식으로 쉽게 구현할 수 있도록 합니다.
UICollectionViewFlowLayout의 한계를 극복Compositional Layout
└── Section
└── Group
└── Item
let layout = UICollectionViewCompositionalLayout { sectionIndex, layoutEnvironment in
// 1. 아이템 크기 정의
let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0),
heightDimension: .fractionalHeight(1.0))
let item = NSCollectionLayoutItem(layoutSize: itemSize)
// 2. 그룹 크기 정의
let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(0.9),
heightDimension: .absolute(150))
let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
// 3. 섹션 생성
let section = NSCollectionLayoutSection(group: group)
section.orthogonalScrollingBehavior = .groupPaging
return section
}
collectionView.collectionViewLayout = layout
.none → 기본 동작.continuous → 연속 스크롤.groupPaging → 그룹 단위 페이징.groupPagingCentered → 중앙 정렬 페이징섹션마다 다른 레이아웃 적용 가능:
let layout = UICollectionViewCompositionalLayout { sectionIndex, _ in
if sectionIndex == 0 {
// 첫 번째 섹션: 가로 스크롤
} else {
// 두 번째 섹션: 세로 리스트
}
}
UICollectionViewCompositionalLayout는 기존 FlowLayout의 한계를 극복하고,
다양하고 복잡한 UI를 쉽게 구현할 수 있는 강력한 도구입니다.
현대 iOS 앱 개발에서 컬렉션 뷰 레이아웃 구현의 표준으로 자리 잡았습니다.