UICollectionView Basics

ios dev·2021년 10월 2일
0

UICollectionView Basics

  • content를 화면에 표시하기 위해 collectionView는 다양한 object협력한다.
  • app에 의해 제공되는 사용자 지정 object와 (ex: app은 collectionView에 표시할 item의 개수를 알려주는 data source를 반드시 제공해야 한다.)
    UIKit에서 제공하는 basic collectionView design의 일부인 object가 있다.
  • tableView와 마찬가지로 collectionView는 data-oriented object이다.

A Collection View is a Collaboration of Objects

  • collectionView design은 데이터가 화면에 표시되는 방식데이터분리한다.
  • app이 표시할 데이터엄격하게 관리하지만 시각적인 표시는 다양한 object에 의해 관리된다.
  • collectionView의 class 중 대부분은 subclassing할 필요 없이 그대로 사용하도록 설계되어있기 때문에 적은 코드로 collectionView를 구현할 수 있다.
  • And when you want to go beyond the provided behavior, you can subclass and provide that behavior.

collectionView를 구현하기 위한 class 및 protocol

Classes / Protocols설명
UICollectionView,
UICollectionViewController
- Purpose: Top-level containment and management

- content의 시각적인 영역을 정의
- UIScrollView 상속
- layout object에서 수신하는 layout정보를 기반으로 데이터를 표시
- UICollectionViewController는 viewController 수준의 관리 지원을 제공(선택사항)
(protocol)UICollectionViewDataSource,
(protocol)UICollectionViewDelegate
- Purpose: Content management

- data source object는 collectionView와 연결된 가장 중요한 object이며 반드시 제공해야 한다.
- data source는 collectionView의 content를 관리하고 content를 표시하기 위한 view를 만든다.
- data source를 구현하기 위해서는 UICollectionViewDataSource 프로토콜을 준수하는 object를 생성해야 한다.

- delegate object를 사용하면 collectionView의 동작을 지정할 수 있다.
- delegate선택사항이다.
UICollectionReusableView,
UICollectionViewCell
- Purpose: Presentation

- collectionView에 표시되는 모든 view는 UICollectionReusableView class의 인스턴스여야 한다.
- 이 classs는 recycling mechanism을 지원한다.
- recycling mechanism을 통해 성능을 향상시킨다.(특히 scroll하는 상황)
- ex) header, footer 등

- UICollectionViewCell object는 기본 데이터 항목에 사용되는 reusable view의 특정 유형이다.
UICollectionViewLayout,
UICollectionViewLayoutAttributes,
UICollectionViewUpdateItem
- Purpose: Layout

- UICollectionViewLayoutsubClass들은 layout object라고 하며 위치, 크기 등 시각적 속성을 정의하는 역할을 한다.
- layout 프로세스에서 layout object는 layout attribute object를 만든다.
- layout object는 데이터 항목이 변경될 때마다 UICollectionViewUpdateItem의 인스턴스를 받는다.(UICollectionViewUpdateItem의 인스턴스는 직접 만들 필요가 없다.)
UICollectionViewFlowLayout,
(protocol)UICollectionViewDelegateFlowLayout
- Purpose: Flow layout

- UICollectionViewFlowLayoutgird 또는 line 기반 layout을 구현하는 데 사용하는 object이다.
- layout 정보를 동적으로 지정(customize)할 수 있다.

content와 layout을 병합한 최종 presentation

  • collectionViewdata source에서 표시할 cell에 대한 정보를 가져온다.
  • data sourcedelegate object는 content관리하는 사용자 지정 object이다.
  • layout objectcell위치를 결정하고 해당 정보를 하나 이상의 layout attribute object 형태로 만들어 collectionView 에게 보낸다.
  • 최종적으로, collectionView는 layout 정보를 실제 cell(and other views)과 병합해 presentation을 만든다.





cf.
https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CollectionViewBasics/CollectionViewBasics.html#//apple_ref/doc/uid/TP40012334-CH2-SW7

0개의 댓글