InfiniteScrolling
向 collection view 添加无限滚动。
这是一个向 UICollectionView
添加无限滚动行为的基本实现。
用法
使用相当简单。 InfiniteScrollingBehaviour
只有一个指定的初始化器。
init(withCollectionView collectionView: UICollectionView, andData dataSet: [InfiniteScollingData], delegate: InfiniteScrollingBehaviourDelegate, configuration: CollectionViewConfiguration = .default)
InfiniteScrollingData
是一个协议,您的模型需要遵守。目前它是一个空的协议,但由于可扩展性的目的,我觉得将数据集作为自定义协议的集合而不是 Any
来添加是有意义的。
CollectionViewConfiguration
可以用来调整无限滚动的某些行为。您需要提供 layoutType
和 scrollingDirection
。根据这两个属性,将添加边界元素以及单元格的大小。默认情况下,InfiniteScrollingBehaviour
有一个带有布局值 .numberOfCellsOnScreen(5)
和 scrollingDirection
为 horizontal
的 CollectionViewConfiguration
。
布局类型
LayoutType
有两个情况
case fixedSize(sizeValue: CGFloat, lineSpacing: CGFloat)
:如果你需要固定大小(如果水平滚动,sizeValue
值将是单元格的宽度,而在垂直滚动中,它将是单元格的高度。)case numberOfCellOnScreen(Double)
:如果你不关心大小,你需要在不同屏幕尺寸下显示固定数量的元素。
如果你需要具有分页功能的无限滚动,请在collectionView中启用分页,并将numberOfCellsOnScreen
设置为1。
注意:目前不支持自定义布局和不等大小的单元格。
无限滚动行为代理
这个代理有两个方法。
func configuredCell(forItemAtIndexPath indexPath: IndexPath, originalIndex: Int, andData data: InfiniteScollingData, forInfiniteScrollingBehaviour behaviour: InfiniteScrollingBehaviour) -> UICollectionViewCell
func didSelectItem(atIndexPath indexPath: IndexPath, originalIndex: Int, andData data: InfiniteScollingData, inInfiniteScrollingBehaviour behaviour: InfiniteScrollingBehaviour) -> Void
第一个是必须的方法。实现需要根据以下参数提供配置的UICollectionViewCell
。
- indexPath:collectionView中的实际索引。
- originalIndex:原始数据集中的索引。
- data:将用于配置单元格的
InfiniteScollingData
。
注意:如果数据集中的元素数量小于maxNumberOfCellsOnScreen
,系统将自动调整边界,以在屏幕上重复相同的元素。
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install
。
要求
- 最低iOS版本:9.0
- Swift:3.0
- Xcode 8
安装
InfiniteScrolling 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中。
pod "InfiniteScrolling"
授权
InfiniteScrolling 在 MIT 许可协议下提供。有关更多信息,请参阅 LICENSE 文件。