CollectionViewWaterfallLayout
由 Pinterest 启发的 UICollectionView 布局
注意:已针对 Swift 5.0 进行更新。这是一个从 Swift 2.0 的大幅升级,如果在使用过程中遇到任何问题,请提交问题/修复。谢谢!
CollectionViewWaterfallLayout 是一个完全用 Swift 编写的 UICollectionViewLayout 子类。该类基于由 CHTCollectionViewWaterfallLayout 构建,该布局由 chiahsien 在 Objective-C 中编写。该类尽可能使用最新 Swifty 事物来保持代码与当前设计模式同步。
原始布局是受 Pinterest 启发的。
功能
- 易于使用 - 如果您已经习惯了使用 UICollectionViewFlowLayout,那么这将显得很自然
- 高度可定制
- 出色的性能
- 支持头部和尾部
屏幕截图
前提条件
- ARM架构
- iOS 8及以上
- Xcode 10及以上
- Swift 5.0
安装
CollectionViewWaterfallLayout可以通过CocoaPods获取。要安装它,只需在Podfile中添加以下行
pod "CollectionViewWaterfallLayout"
如何使用
请确保在您打算使用CollectionViewWaterfallLayout的文件中导入pod
import CollectionViewWaterfallLayout
查看示例项目,了解如何使用storyboards设置视图,并通过编程创建和自定义瀑布布局。
可定制属性
以下是您可以根据需要更改以自定义布局的公共属性及其默认值
var columnCount: Int = 2
var minimumColumnSpacing: Float = 10.0
var minimumInteritemSpacing: Float = 10.0
var headerHeight: Float = 0.0
var footerHeight: Float = 0.0
var headerInset: UIEdgeInsets = .zero
var footerInset: UIEdgeInsets = .zero
var sectionInset: UIEdgeInsets = .zero
必需协议
您的集合视图的代理必须遵守CollectionViewWaterfallLayoutDelegate协议并实现必需的方法,您需要做的就是返回项目的原始大小
func collectionView(collectionView: UICollectionView, layout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
可选协议
您可以通过以下可选协议方法动态自定义布局属性。
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, heightForHeaderInSection section: Int) -> Float
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, heightForFooterInSection section: Int) -> Float
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, insetForSection section: Int) -> UIEdgeInsets
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, insetForHeaderInSection section: Int) -> UIEdgeInsets
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, insetForFooterInSection section: Int) -> UIEdgeInsets
func collectionView(_ collectionView: UICollectionView, layout: UICollectionViewLayout, minimumInteritemSpacingForSection section: Int) -> Float
限制
- 仅支持垂直滚动。
- 无装饰视图。
许可证
CollectionViewWaterfallLayout 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。