JWInfiniteCollectionView
有时,当显示的数据有限时,应用程序的 UX 设计师想要让其中一个集合视图实现无限滚动。当用户滚动到数据集的底部时,第一份数据会重新出现在屏幕上;如果用户向另一方向滚动,最后一份数据会重新出现在屏幕上。传统上,实现无限 UICollectionView 的解决方案是使用一个大的重复数据集(例如,原始数据集的 1000 倍)来欺骗用户相信集合视图是无限的。
但是,一个大的重复数据集不可避免地会引入大量的 UICollectionViewLayoutAttributes,因此会引入额外的开销。此外,如果用户对滚动你的集合视图感到非常无聊,一整天都坐在那里滚动呢?这种事情发生的可能性可能很小,但毕竟,拥有一个大的重复数据集不是一个非常优雅的解决方案。
JWInfiniteCollectionView 只在数据集的开始和结束处额外添加少量重复项。这样做可以避免大多数由大型重复数据集引入的额外开销,如果不是全部的话。
无限滚动的原理
无限滚动是通过在原始数据集(黑色矩形)的左侧和右侧(棕色矩形)添加额外的项来实现的,从而得到更大的可滚动区域;这类似于具有大的重复数据集,但区别在于数量。
- 开始时,集合视图的内容偏移量计算为仅显示原始数据集(绘制在黑色矩形中);
- 当用户向右滚动,内容偏移量达到触发值时,我们将内容偏移量重置以显示相同的外观效果;但实际上显示的是填充数据集;
- 当用户向左滚动时,使用相同的逻辑。
有关更多详细信息,您可以阅读此博客文章。
示例
要运行示例项目,请先克隆仓库,然后从Example目录运行pod install
。
要求
- iOS 8.0+
- ARC
特性
完成
- 水平无限滚动
- 简单的自定义流式布局
- 添加一个无限开关标志,以便在普通集合视图和无限滚动集合视图之间切换
待办事项
- 自定义流式布局子类别,以自定义集合视图单元布局属性
- 添加更多可能的测试
使用CocoaPods安装
CocoaPods 是iOS或OSX应用的依赖关系管理器,它自动并简化了在项目中使用第三方库的过程。更多信息请参阅“开始使用”指南。您可以使用以下命令进行安装:
$ gem install cocoapods
Podfile
要将 JWWaveView 整合到您的 Xcode 项目中,使用 CocoaPods,只需在您的 Podfile 中添加以下行
pod 'JWInfiniteCollectionView'
然后,运行以下命令
$ pod install
作者
Alex1989Wang,[email protected]
许可证
JWInfiniteCollectionView 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。