StickySplitCollectionViewFlowLayout
这是什么?
StickySplitCollectionViewFlowLayout
是从 UICollectionViewFlowLayout
衍生出来的布局。它针对紧凑尺寸提供了分割布局以及粘性头部单元格。它支持与 UICollectionViewFlowLayout
相同的所有功能,包括 UICollectionElementKindSectionHeader
和 UICollectionElementKindSectionFooter
。初始实现受到了 CSStickyHeaderFlowLayout 的启发。
安装
通过 CocoaPods 安装,请将以下内容添加到您的 Podfile
pod 'StickySplitCollectionViewFlowLayout'
通过 Carthage 安装,请将以下内容添加到您的 Cartfile
git "https://github.com/gjeck/StickySplitCollectionViewFlowLayout.swift.git"
使用方法
StickySplitCollectionViewFlowLayout
与 UICollectionViewFlowLayout
工作非常相似。首先,将一个 StickySplitCollectionViewFlowLayout
分配给一个 collection view layout
let stickySplitLayout = StickySplitCollectionViewFlowLayout()
collectionView.collectionViewLayout = stickySplitLayout
然后注册一个类型为 StickySplitCollectionViewFlowLayout.mainElementKind
的补充视图作为主头部
let nib = UINib(nibName: "SomeCollectionReusableView", bundle: nil)
collectionView.register(nib, forSupplementaryViewOfKind: StickySplitCollectionViewFlowLayout.mainElementKind, withReuseIdentifier: "someIdentifier")
最后,为这个补充视图提供一个参考大小
stickySplitLayout.mainHeaderReferenceSize = CGSize(kSomeWidth, kSomeHeight)
配置布局
属性 enforcedLayoutMode
控制主头部的主布局行为。它默认为 .implicit(.left)
,这意味着当collectionView边界宽度大于高度时,主头部将居左对齐。可以将此属性设置为 vertical
以使其像常规的布局方式。
属性 mainHeaderPinsToVisibleBounds
与 sectionHeadersPinToVisibleBounds
类似,但指定应用主头部。
熟悉API以查看更多功能!
贡献
工作空间文件 StickySplitCollectionViewFlowLayout.xcworkspace
通常在这里进行开发。此工作空间包含两个项目 StickySplitCollectionViewFlowLayout
和 StickySplitCollectionViewFlowLayoutIntegration
。项目 StickySplitCollectionViewFlowLayout
是实际导出的包。项目 StickySplitCollectionViewFlowLayoutIntegration
是集成测试套件,同时也是实现示例的展示。
单元测试和集成测试
单元测试位于 StickySplitCollectionViewFlowLayout
项目中。它们是建立在 XCTest
基础上的。
集成测试位于 StickySplitCollectionViewFlowLayoutIntegration
,通常基于 FBSnapshotTestCase。
版本控制系统
项目遵循 语义版本控制 的约定。要更新版本
git tag -a MAJOR.MINOR.PATCH -m "version MAJOR.MINOR.PATCH"
git push origin --tags
同时,请确保更新 StickySplitCollectionViewFlowLayout.podspec
中指定的版本。
CocoaPods
要验证 podspec 是否工作正常,请运行以下命令
pod spec lint