UICollectionViewLayout
概要
Collection の種類
Layout object 自体は Collection のレイアウト情報を提供するだけで Collection の View は生成しない。View の生成は CollectionView の datasource が行う。
Collection の種類には以下がある。
Cells
各セルは、Collection 内の単一のデータを表現する。CollectionView のコンテンツエリアにこのセルを並べるのが Layout job の主な仕事
Supplementary views
セルとは違い、ユーザに選択できない。CollectionView 全体やセクション内にヘッダーやフッターを実装したい時に使える。CollectionView の datasource によって作成された特定の item にひもづく
Decoration views
Supplementary views の一形態。Supplementary views と同様に選択はできない。違いは、データに紐づかないこと。例えば、スクリーン上に 5 item 毎に線を引く、等
これらは、UICollectionView.ElementCategory として enum で表現されている。
サブクラス化について
Layout オブジェクトが実装すべきメソッドは以下。
Layout object に現在のレイアウトの更新を伝える
layout が実行されるときに呼ばれる
各レイアウトの更新時に Collection View によって呼ばれ、レイアウトのための準備の機会を与えられる
デフォルト実装はなし
Collection View のサイズや位置を決定するための計算を行う
Collection View のコンテンツの幅と高さを返す
コンテンツ全体を収容する領域のサイズを返す
これで指定したサイズ分スクロールする
特定の矩形内の全ての item の layout attribute を返す
デフォルト実装では null を返す
特定の index path の item の layout attribute を返す
新たな範囲ではレイアウトの更新が必要かどうか?
デフォルト実装は false を返す