现代 UICollectionView

172 阅读1分钟

历史

UICollectionView 从iOS6.0加入,解决了UITableView不能横向滚动的问题,加入了UICollectionViewLayout,做到了与布局分离。提供默认的流式布局,还支持自定义布局,功能非常强大,比如3D效果。

问题

更加多变的布局

随着要展示的内容越来越丰富,比如AppStore,就支持横向和纵向同时滚动。就要在UICollectionView中嵌入UICollectionView,实现复杂的布局效果。写起来很麻烦。

数据驱动刷新

对页面的更新也越来多样,reloadData虽然简单直接,但是体验不佳,耗费性能。业界也有开源实现。比如IGListKit。也迫切需要官方的方案。

Implementing Modern Collection Views 这个官方例子展现了苹果最新的UICollectionView功能

现代UICollection

为了配合Swift,基本不用delegate实现回调,基本都是闭包实现

UICollectionViewDiffableDataSource

提供数据更新机制

UICollectionViewCompositionalLayout

提供复杂的布局实现

实现

UICollectionViewDiffableDataSource