UICollectionViewLayoutAttributes

Panther·2021년 8월 24일
0
post-custom-banner

https://developer.apple.com/documentation/uikit/uicollectionviewlayoutattributes

"A layout object that manages the layout-related attributes for a given item in a collection view."

컬렉션 뷰에서 주어진 아이템에 대한 레이아웃 관련 특성을 관리하는 레이아웃 객체입니다.

Declaration

@MainActor class UICollectionViewLayoutAttributes : NSObject

Overview

레이아웃 객체는 컬렉션 뷰에 의해 이 클래스의 인스턴스를 생성하라고 요청받는 경우 이 클래스의 인스턴스를 생성합니다. 다음으로 컬렉션 뷰는 bounds 내에서 셀 및 보완 뷰를 위치사키기 위해 레이아웃 정보를 사용합니다.

Subclassing Notes

대부분의 경우 이 클래스를 그 자체로 사용할 수 있습니다. 커스텀 레이아웃 특성을 통해 기본적인 레이아웃 특성을 보완하길 원한다면 추가적인 레이아웃 데이터에 저장할 어떠한 속성이든 서브클래싱하고 정의할 수 있습니다. 레이아웃 특성 객체는 컬렉션 뷰에 의해 복사되기 때문에 커스텀 속성을 서브클래스의 새 인스턴스로 복사하는 데 적합한 모든 메소드를 구현함으로써 서브클래스가 NSCopying 프로토콜을 따를 수 있도록 해야 합니다. 서브클래스 정의와 더불어 UICollectionReusableView 객체는 apply(_:) 메소드를 구현해야 할 필요가 있으며, 이로써 이 객체는 레이아웃 타임에 모든 커스텀 특성을 적용할 수 있게 됩니다.

커스텀 레이아웃 특성을 서브클래싱하고 구현하는 경우 속성의 값을 비교하려면 상속된 isEqual: 메소들르 오버라이드해야 합니다. iOS 7 및 이후 버전에서 컬렉션 뷰는 레이아웃 특성이 변하지 않으면 레이아웃 특성을 적용하지 않습니다. isEqual: 메소드를 사용해서 기존 특성 객체와 새 특성 객체를 비교해 변경된 부분이 있는지를 확인합니다. 이 메소드의 기본값 구현은 이 클래스의 기존 속성만을 확인하기 때문에 모든 추가적인 속성을 비교하려면 메소드의 고유한 버전을 구현해야 합니다. 커스텀 속성이 모두 같으면 super를 호출하고 구현 끝에 결과 값을 반환하시기 바랍니다.

See Also


Manual Layouts

UICollectionViewLayout

컬렉션 뷰의 레이아웃 정보를 생성하기 위한 추상 베이스 클래스입니다.

https://developer.apple.com/documentation/uikit/uicollectionviewlayout
https://velog.io/@panther222128/UICollectionViewLayout

UICollectionViewFlowLayout

각 섹션에 선택적인 헤더 및 footer 뷰와 함께 아이템을 그리드로 조직화하는 레이아웃 객체입니다.

https://developer.apple.com/documentation/uikit/uicollectionviewflowlayout
https://velog.io/@panther222128/UICollectionViewFlowLayout

UICollectionViewTransitionLayout

컬렉션 뷰에서 하나의 레이아웃으로부터 다른 레이아웃으로 변경될 때 동작을 구현할 수 있도록 해주는 레이아웃 객체의 특별한 타입입니다.

https://developer.apple.com/documentation/uikit/uicollectionviewtransitionlayout
https://velog.io/@panther222128/UICollectionViewTransitionLayout

UICollectionViewFlowLayoutInvalidationContext

아이템의 크기를 다시 계산할지 혹은 레이아웃에서 위치를 다시 계산할지 결정하는 속성의 집합입니다.

https://developer.apple.com/documentation/uikit/uicollectionviewflowlayoutinvalidationcontext
https://velog.io/@panther222128/UICollectionViewFlowLayoutInvalidationContext


post-custom-banner

0개의 댓글