Modern UICollectionView
iOS 13
DiffableDataSource
Compositional Layout
iOS 14
Diffable Datasources Reorder
Diffable DataSources SEction Snapshot
Compositional Layout Lists
Cell Registration
Cell Configuration
iOS 15
reconfigureCell
iOS 16
Diffable Data Sources
UICollectionViewDataSouce では、セルの構築は、以下のような流れだった
View から必要に応じて ViewController (UICollectionViewDataSource) を呼び出す
ViewController は自身が管理しているアイテムからデータを取り出し情報を返す
問題点としては、セルに反映するデータの取り出しと、セクション数の取り出しと、アイテム数の取り出しが各々独立しているために、不整合が発生しやすいというものがあった
一方、UICollectionViewDiffableDataSource は Item や Section の source of truth を dataSource 側で管理することで、この不整合を発生させないようにしている
データを反映させたい場合は、データそのものを DataSource に受け渡すと、それが反映される
差分がある場合はそれが検知され、イイカンジにアニメーションもしてくれる
ItemIdentifierType は、その名の通り Item の一意性の判断に用いられ、差分更新の際に役立つ
これはセルの Insert/Delete の場合はうまく動くが、Update の場合には望んだ通りに動かない可能性がある
Update の場合には reconfigureItems を利用するといい
Compositional Layout
item
group
horizontal
vertical
section
edgeSpacing
contentInset
extimated と併用してはいけない
group.interItem
section.interGroup
Cell Configuration