NSCollectionLayoutAnchor

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

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

"An object that defines how to attach a supplementary item to an item in a collection view."

컬렉션 뷰에 있는 아이템에 보완 아이템을 추가하는 방법을 정의하는 객체입니다.

Declaration

iOS, Mac Catalyst, tvOS

@MainActor class NSCollectionLayoutAnchor : NSObject

macOS

class NSCollectionLayoutAnchor : NSObject

Overview

특정 아이템에 보완 아이템을 추가하기 위해 anchor를 사용할 수 있습니다. anchor는 보완 아이템이 아이템 어느 곳에 추가될지에 대한 정보를 포함합니다. 아래 내용을 포함합니다.

  • 모서리 혹은 모서리의 집합입니다. 하나의 모서리에 보완 아이템을 추가할 수도 있고, 두 개의 인접 모서리를 구체화해서 코너에 추가할 수도 있습니다.
  • 아이템으로부터의 offset입니다. 기본값으로 보완 아이템은 아이템이 추가되는 구체화된 모서리 내에 고정됩니다. anchor 생성 시 커스텀 offset을 제공하면 이 위치를 변경시킬 수 있습니다.

Edges

anchor에 대한 leading, trailing edge는 '왼쪽에서 오른쪽', '오른쪽에서 왼쪽' 각각의 환경에서 다릅니다. '왼쪽에서 오른쪽' 환경에서 leading edge는 왼쪽에 있고 trailing edge는 오른쪽에 있습니다. '오른쪽에서 왼쪽' 환경에서 leading edge는 오른쪽에 있고 trailing edge는 왼쪽에 있습니다. 이 차이는 컬렉션 뷰 레이아웃이 오른쪽에서 왼쪽으로 읽는 언어를 지원하는 빌드를 가능하게 합니다.

아래 그림은 '왼쪽에서 오른쪽' 환경에서 구체화된 모서리에 anchor 위치를 보여주고 있습니다.

Offset

아래 방법으로 anchor offset을 표현할 수 있습니다.

  • 절대적 값입니다. offset은 포인트 값으로 계산됩니다. 예를 들어 30.0의 절대적 값 x offset은 보완 뷰의 원점이 양의 x 방향에서 30 포인트 만큼의 offset임을 의미합니다.
  • 비율 값입니다. offset은 보완 아이템 차원의 비율로 계산됩니다. 예를 들어 0.3의 비율 x offset은 보완 아이템의 원점이 양의 x 방향에서 보완 아이템 넓이의 30% offset임을 의미합니다.

아래 코드는 기본적인 badge 생성과 이 badge를 아이템의 top trailing 코너에 추가하는 것을 보여주고 있습니다.

let itemSize = NSCollectionLayoutSize(widthDimension: .absolute(44),
                                     heightDimension: .absolute(44))
    
let badgeAnchor = NSCollectionLayoutAnchor(edges: [.top, .trailing],
                                fractionalOffset: CGPoint(x: 0.3, y: -0.3))
    
let badgeSize = NSCollectionLayoutSize(widthDimension: .absolute(20),
                                      heightDimension: .absolute(20))
    
let badge = NSCollectionLayoutSupplementaryItem(layoutSize: badgeSize,
                                               elementKind: "badge",
                                           containerAnchor: badgeAnchor)
    
let item = NSCollectionLayoutItem(layoutSize: itemSize,
                          supplementaryItems: [badge])

See Also


Appearance

NSCollectionLayoutSupplementaryItem

컬렉션 뷰에 있는 아이템에 badge 혹은 프레임과 같은 추가적인 시각적 장식을 더하기 위해 사용되는 객체입니다.

https://developer.apple.com/documentation/uikit/nscollectionlayoutsupplementaryitem
https://velog.io/@panther222128/NSCollectionLayoutSupplementaryItem

NSCollectionLayoutBoundarySupplementaryItem

컬렉션 뷰에 헤더 혹은 footer를 추가하기 위해 사용되는 객체입니다.

https://developer.apple.com/documentation/uikit/nscollectionlayoutboundarysupplementaryitem
https://velog.io/@panther222128/NSCollectionLayoutBoundarySupplementaryItem

NSCollectionLayoutDecorationItem

컬렉션 뷰의 섹션에 백그라운드를 추가하기 위해 사용되는 객체입니다.

https://developer.apple.com/documentation/uikit/nscollectionlayoutdecorationitem
https://velog.io/@panther222128/NSCollectionLayoutDecorationItem


post-custom-banner

0개의 댓글