InfiniteScrolling 1.0.3

InfiniteScrolling 1.0.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2018年3月
SwiftSwift 版本3.0
SPM支持 SPM

Vishal Singh Panwar维护。



  • Vishal Singh Panwar

InfiniteScrolling

CI Status Version License Platform Code Climate

向 collection view 添加无限滚动。

这是一个向 UICollectionView 添加无限滚动行为的基本实现。

用法

使用相当简单。 InfiniteScrollingBehaviour 只有一个指定的初始化器。

init(withCollectionView collectionView: UICollectionView, andData dataSet: [InfiniteScollingData], delegate: InfiniteScrollingBehaviourDelegate, configuration: CollectionViewConfiguration = .default)

InfiniteScrollingData 是一个协议,您的模型需要遵守。目前它是一个空的协议,但由于可扩展性的目的,我觉得将数据集作为自定义协议的集合而不是 Any 来添加是有意义的。

CollectionViewConfiguration 可以用来调整无限滚动的某些行为。您需要提供 layoutTypescrollingDirection。根据这两个属性,将添加边界元素以及单元格的大小。默认情况下,InfiniteScrollingBehaviour 有一个带有布局值 .numberOfCellsOnScreen(5)scrollingDirectionhorizontalCollectionViewConfiguration

布局类型

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

2017-01-23 00_52_09

要求

  • 最低iOS版本:9.0
  • Swift:3.0
  • Xcode 8

安装

InfiniteScrolling 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中。

pod "InfiniteScrolling"

授权

InfiniteScrolling 在 MIT 许可协议下提供。有关更多信息,请参阅 LICENSE 文件。