@MainActor class UICollectionView : UIScrollView
Collection View를 사용자 인터페이스에 추가할 때 앱의 주요 작업은 해당 Collection View와 연결된 데이터를 관리하는 것입니다.
Collection View는 Collection View의 dataSource 속성에 저장된 데이터 소스 개체에서 데이터를 가져옵니다.
데이터 소스의 경우 Collection View의 데이터 및 사용자 인터페이스에 대한 업데이트를 간단하고 효율적으로 관리하는 데 필요한 동작을 제공하는 UICollectionViewDiffableDataSource
개체를 사용할 수 있습니다.
또는 UICollectionViewDataSource 프로토콜
을 채택하여 사용자 지정 데이터 소스 개체를 만들 수 있습니다.
Collection View의 데이터는 프레젠테이션을 위해 섹션으로 그룹화할 수 있는 개별 항목으로 구성됩니다.
항목은 표시하려는 데이터의 가장 작은 단위입니다.
예를 들어 사진 앱에서 항목은 단일 이미지일 수 있습니다.
Collection View는 데이터 소스가 구성하고 제공하는 UICollectionViewCell 클래스의 인스턴스인 셀을 사용하여 화면에 항목을 표시합니다.
Figure 1 A collection view using the flow layout
Collection View는 셀 외에도 다른 유형의 View를 사용하여 데이터를 표시할 수 있습니다.
이러한 추가 View는 개별 셀과 분리되어 있지만 여전히 정보를 전달하는 섹션 머리글 및 바닥글
일 수 있습니다.
보조 View에 대한 지원은 선택 사항이며 Collection View의 layout 개체에 의해 정의되며, 이는 해당 View의 배치를 정의하는 역할도 합니다.
UICollectionView를 사용자 인터페이스에 포함하는 것 외에도 Collection View의 메서드를 사용하여 항목의 시각적 표현이 데이터 소스 개체의 순서와 일치하는지 확인합니다.
UICollectionViewDiffableDataSource 개체는 이 프로세스를 자동으로 관리합니다.
사용자 지정 데이터 소스를 사용하는 경우 Collection에서 데이터를 추가, 삭제 또는 재정렬할 때마다 UICollectionView의 메서드를 사용하여 해당 셀을 삽입, 삭제 및 재정렬합니다.
Collection View 개체를 사용하여 선택한 항목을 관리할 수도 있지만 이 동작의 경우 Collection View가 연결된 대리자 개체와 함께 작동합니다.
layout 객체는 위치를 정의하지만 실제로 해당 정보를 해당 View에 적용하지 않습니다.
Collection View는 셀 및 보조 View를 생성하는 데 Collection View와 데이터 원본 개체 간의 조정이 포함되기 때문에 해당 View에 layout 정보를 적용합니다.
Collection View의 layout을 동적으로 변경할 수도 있습니다.
collectionViewLayout
속성에 저장됩니다.setCollectionViewLayout(_:animated:completion:)
메서드를 호출하세요.startInteractiveTransition(to:completion:)
메서드를 사용하여 layout 개체를 변경합니다.finishInteractiveTransition()
또는 cancelInteractiveTransition()
메서드를 호출하여 중간 layout 객체를 제거하고 의도한 대상 layout 객체를 설치합니다.dequeueReusableCell(withReuseIdentifier:for:)을 사용하여 Collection View에서 항목에 대한 셀을 가져옵니다.
dequeueReusableSupplementaryView(ofKind:withReuseIdentifier:for:) 메서드를 사용하여 layout 객체에서 요청한 보조 View를 가져옵니다.
register(_:forCellWithReuseIdentifier:) 메서드를 사용하여 클래스를 등록
하거나 register(_:forCellWithReuseIdentifier:) 메서드를 사용하여 nib 파일을 등록
합니다.Collection View는 응답성을 향상시키는 데 사용할 수 있는 두 가지 Prefetching 기술을 제공합니다.
Cell prefetching는 필요한 시간보다 미리 셀을 준비합니다.
Collection View에 많은 수의 셀이 동시에 필요한 경우(예: 그리드 layout의 새 셀 행) 표시에 필요한 시간보다 먼저 셀이 요청됩니다.
따라서 셀 렌더링은 여러 layout 패스에 걸쳐 분산되어 더 부드러운 스크롤 경험을 제공합니다.
셀 프리페치는 기본적으로 활성화되어 있습니다.
Data prefetching는 셀에 대한 요청에 앞서 Collection View의 데이터 요구 사항에 대해 알림을 받는 메커니즘을 제공합니다.
이는 셀의 콘텐츠가 네트워크 요청과 같은 부하가 큰 데이터 로드 프로세스에 의존하는 경우에 유용합니다.
UICollectionViewDataSourcePrefetching 프로토콜을 준수하는 개체를 prefetchDataSource 속성에 할당하여 셀에 대한 데이터를 미리 가져올 때 알림을 받습니다.
beginInteractiveMovementForItem(at:)
메서드를 호출합니다.updateInteractiveMovementTargetPosition(_:)
메서드를 호출하여 터치 위치의 변경 사항을 보고합니다.endInteractiveMovement()
또는 cancelInteractiveMovement()
메서드를 호출하여 상호 작용을 종료하고 Collection View를 업데이트합니다.UICollectionViewController
클래스는 관리되는 Collection View에서 항목을 재정렬하는 데 사용할 수 있는 기본 제스처 인식기를 제공합니다.installsStandardGestureForInteractiveMovement
속성을 true로 설정하세요.