历史
UICollectionView 从iOS6.0加入,解决了UITableView不能横向滚动的问题,加入了UICollectionViewLayout,做到了与布局分离。提供默认的流式布局,还支持自定义布局,功能非常强大,比如3D效果。
问题
更加多变的布局
随着要展示的内容越来越丰富,比如AppStore,就支持横向和纵向同时滚动。就要在UICollectionView中嵌入UICollectionView,实现复杂的布局效果。写起来很麻烦。
数据驱动刷新
对页面的更新也越来多样,reloadData虽然简单直接,但是体验不佳,耗费性能。业界也有开源实现。比如IGListKit。也迫切需要官方的方案。
Implementing Modern Collection Views 这个官方例子展现了苹果最新的UICollectionView功能
现代UICollection
为了配合Swift,基本不用delegate实现回调,基本都是闭包实现
UICollectionViewDiffableDataSource
提供数据更新机制
UICollectionViewCompositionalLayout
提供复杂的布局实现
实现
UICollectionViewDiffableDataSource