UICollectionView 살펴보기3 (UICollectionViewFlowLayout, UICollectionViewDelegateFlow
오늘은 UICollectionViewFlowLayout와 UICollectionViewDelegateFlowLayout에 대해서 살펴보겠습니다.
UICollectionViewFlowLayout은 컬렉션 뷰 레이아웃의 한 유형입니다.

플로우 레이아웃 객체가 아이템들을 배치하고 최대한 많이 아이템들을 채우는 것을 의미합니다.
만약 현재 행에서 공간이 부족하면 새로운 행을 생성하며 레이아웃 프로세스를 진행합니다.
셀의 크기가 같거나 크기가 다를 수 있습니다.
.scrollDirection 속성을 사용해 스크롤 방향을 지정할 수 있습니다.
플로우 레이아웃의 각 세션이는 커스텀 헤더 푸터가 있을 수 있습니다.
헤더 및 푸터 글을 구성하려면 크기를 0이 아니게 지정하세요.
아래의 델리게이트 메서드를 구현하거나 프로퍼티에 적당한 값을 할당하면 됩니다.
만약 헤더나 푸터 사이즈가 0이라면 해당 뷰가 컬렉션 뷰에 추가되지 않습니다.
플로우 레이아웃 구성 단계
- 플로우 레이아웃 객체를 작성해 컬렉션 뷰의 레이아웃 객체로 지정합니다.
- 셀의 너비와 높이를 구성합니다.
- 필요한 경우 셀의 간격을 조절합니다.
- 원할 경우 섹션 헤더 혹은 섹션 푸터 크기를 지정합니다.
- 레이아웃의 스크롤 방향을 설정합니다.

UICollectionViewFlowLayout객체와 상호작용하여 레이아웃을 조정할 수 있는 메서드가 정의되어 있습니다.
이 프로토콜은 아이템들 사이의 간격과 크기를 정의합니다.
이 프로토콜의 모든 메서드들은 모두 옵셔널입니다.
특정 메서드를 구현하지 않으면, 플로우 레이아웃 델리게이트가 적절한 간격에 대해 자체적으로 정의합니다.
resource:
https://developer.apple.com/documentation/uikit/uicollectionviewflowlayout
https://developer.apple.com/documentation/uikit/uicollectionviewdelegateflowlayout
https://www.edwith.org/boostcourse-ios/lecture/16912