https://developer.apple.com/documentation/uikit/uicollectionviewlayoutattributes
"A layout object that manages the layout-related attributes for a given item in a collection view."
컬렉션 뷰에서 주어진 아이템에 대한 레이아웃 관련 특성을 관리하는 레이아웃 객체입니다.
@MainActor class UICollectionViewLayoutAttributes : NSObject
레이아웃 객체는 컬렉션 뷰에 의해 이 클래스의 인스턴스를 생성하라고 요청받는 경우 이 클래스의 인스턴스를 생성합니다. 다음으로 컬렉션 뷰는 bounds 내에서 셀 및 보완 뷰를 위치사키기 위해 레이아웃 정보를 사용합니다.
대부분의 경우 이 클래스를 그 자체로 사용할 수 있습니다. 커스텀 레이아웃 특성을 통해 기본적인 레이아웃 특성을 보완하길 원한다면 추가적인 레이아웃 데이터에 저장할 어떠한 속성이든 서브클래싱하고 정의할 수 있습니다. 레이아웃 특성 객체는 컬렉션 뷰에 의해 복사되기 때문에 커스텀 속성을 서브클래스의 새 인스턴스로 복사하는 데 적합한 모든 메소드를 구현함으로써 서브클래스가 NSCopying
프로토콜을 따를 수 있도록 해야 합니다. 서브클래스 정의와 더불어 UICollectionReusableView
객체는 apply(_:)
메소드를 구현해야 할 필요가 있으며, 이로써 이 객체는 레이아웃 타임에 모든 커스텀 특성을 적용할 수 있게 됩니다.
커스텀 레이아웃 특성을 서브클래싱하고 구현하는 경우 속성의 값을 비교하려면 상속된 isEqual:
메소들르 오버라이드해야 합니다. iOS 7 및 이후 버전에서 컬렉션 뷰는 레이아웃 특성이 변하지 않으면 레이아웃 특성을 적용하지 않습니다. isEqual:
메소드를 사용해서 기존 특성 객체와 새 특성 객체를 비교해 변경된 부분이 있는지를 확인합니다. 이 메소드의 기본값 구현은 이 클래스의 기존 속성만을 확인하기 때문에 모든 추가적인 속성을 비교하려면 메소드의 고유한 버전을 구현해야 합니다. 커스텀 속성이 모두 같으면 super
를 호출하고 구현 끝에 결과 값을 반환하시기 바랍니다.
컬렉션 뷰의 레이아웃 정보를 생성하기 위한 추상 베이스 클래스입니다.
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/uicollectionviewtransitionlayout
https://velog.io/@panther222128/UICollectionViewTransitionLayout
아이템의 크기를 다시 계산할지 혹은 레이아웃에서 위치를 다시 계산할지 결정하는 속성의 집합입니다.
https://developer.apple.com/documentation/uikit/uicollectionviewflowlayoutinvalidationcontext
https://velog.io/@panther222128/UICollectionViewFlowLayoutInvalidationContext