https://developer.apple.com/documentation/uikit/uicollectionviewtransitionlayout
"A special type of layout object that lets you implement behaviors when changing from one layout to another in your collection view."
컬렉션 뷰에서 하나의 레이아웃으로부터 다른 레이아웃으로 변경될 때 동작을 구현할 수 있도록 해주는 레이아웃 객체의 특별한 타입입니다.
@MainActor class UICollectionViewTransitionLayout : UICollectionViewLayout
UICollectionViewTransitionLayout
은 그 자체로 사용하거나 앱에 특화된 동작을 제공하기 위해 서브클래싱할 수도 있습니다. 전환 레이아웃에 대한 일반적인 사용은 제스쳐 리코그나이저 혹은 터치 이벤트로 기인하는 상호작용 전환 같은 것을 생성하는 것입니다.
레이아웃이 변하는 동안 컬렉션 뷰는 전환을 관리하기 위해 일시적으로 이 레이아웃 객체를 설치합니다. 이 레이아웃 객체는 현재 레이아웃 값과 새 레이아웃 객체 사이를 보간하면서 각 아이템의 레이아웃을 결정합니다. 보간은 전환을 발생시키기 위해 코드로부터 주기적으로 업데이트하는 transitionProgress
속성 값에 의해 움직입니다. 예를 들어 제스쳐 리코그나이저와 함께 이 클래스를 사용하면 제스쳐 리코그나이저를 위한 핸들러는 해당 속성을 업데이트하고 레이아웃을 무효화할 것입니다.
시간에 걸쳐 기존 레이아웃에서 새 레이아웃으로 선형적 전환을 넘어서는 것을 제공하길 원한다면, 아이템을 위한 레이아웃 특성을 직접 서브클래싱하고 제공할 필요가 있습니다. 서브클래싱은 UICollectionViewLayout
을 서브클래싱할 때 오버라이드했던 것과 동일한 모든 메소드를 오버라이드해야 합니다. 커스텀 메소드는 사용자 입력으로부터 레이아웃을 변경하기 위해 제스쳐 리코그나이저 혹은 터치 이벤트 코드를 작동할 수 있다는 차이가 있습니다. 예를 들어 스크린에서 사용자의 손가락 위치를 추적하는 아이템을 만들기 위해 제스쳐 리코그나이저와 함께 커스텀 레이아웃 객체를 사용할 수 있습니다. 컬렉션 뷰 딜리게이트의 collectionView(_:transitionLayoutForOldLayout:newLayout:)
메소드를 구현할 필요가 있으며, 요청받을 때 커스텀 레이아웃 객체를 반환해야 합니다.
컬렉션 뷰의 레이아웃 정보를 생성하기 위한 추상 베이스 클래스입니다.
https://developer.apple.com/documentation/uikit/uicollectionviewlayout
https://velog.io/@panther222128/UICollectionViewLayout
각 섹션에 선택적인 헤더 및 footer 뷰와 함께 아이템을 그리드로 조직화하는 레이아웃 객체입니다.
https://developer.apple.com/documentation/uikit/uicollectionviewflowlayout
https://velog.io/@panther222128/UICollectionViewFlowLayout
컬렉션 뷰에서 주어진 아이템에 대한 레이아웃 관련 특성을 관리하는 레이아웃 객체입니다.
https://developer.apple.com/documentation/uikit/uicollectionviewlayoutattributes
https://velog.io/@panther222128/UICollectionViewLayoutAttributes
아이템의 크기를 다시 계산할지 혹은 레이아웃에서 위치를 다시 계산할지 결정하는 속성의 집합입니다.
https://developer.apple.com/documentation/uikit/uicollectionviewflowlayoutinvalidationcontext
https://velog.io/@panther222128/UICollectionViewFlowLayoutInvalidationContext