更新:我不再在任何项目中使用 PSTCollectionView,但我仍会接受改进的 pull request。
开源,100% API 兼容的 UICollectionView 替代品,适用于 iOS4.3+
你想要使用 UICollectionView,但仍需要支持较旧的 iOS 版本?那么你将喜欢这个项目。 我最初为了 PSPDFKit 写了这个项目,我的支持文本选择和批注的 iOS PDF 框架,但这个项目看起来对其他人来说非常有用,所以我决定将它公开:)
如果你想在 iOS4.3/5.x 上使用 PSTCollectionView,在 iOS6 上使用 UICollectionView,使用 PSUICollectionView(基本上在任意 UICollectionView* 类中添加 PS 即可自动支持较旧的 iOS 版本) 如果你始终想要使用 PSTCollectionView,用 PSTCollectionView 作为类名。(将 UI 替换为 PST)
大多数功能都可以正常工作,包括固定或动态大小的流布局和辅助视图。如果你不进行特殊操作,它应该可以正常工作。PSTCollectionView 也与 UICollectionView 有非常紧密的内部设计,因此如果你想知道 UICollectionView 如何工作,它是一个很好的学习对象。有关有用细节,请参阅 如何使用。
最好的方法是如果你已经在一些地方使用了 UICollectionView。添加 PSTCollectionView 并在 iOS4/5 上尝试它。检查是否一切正常,修复错误直到结果与 iOS6 1:1 对齐。你也可以从问题跟踪器中选择一个问题并开始在那里工作。
或者从 WWDC 的一些示例开始尝试,并尝试让它们与 PSTCollectionView 一起工作。其中大多数已经可以工作,但还没有完美。
你还可以编写一个 Pinterest 风格的布局管理器。这不应该太难。
感谢 Sergey Gavrilyuk (@octogavrix),实现了动画支持。它还没有十全十美(见 LineExample),但它是一个很好的开始。
PSTCollectionView 与 Xcode 4.5.2+ 和 ARC 兼容。
PSTCollectionView 需要 QuartzCore.framework。
另一个目标(至少对于调试非常有用)是 UI/PST 类之间的互操作性
UICollectionViewFlowLayout *flowLayout = [UICollectionViewFlowLayout new];
PSTCollectionView *collectionView = [[PSTCollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:(PSTCollectionViewFlowLayout *)flowLayout];
(*) 注意:对于某些方法,我们不能使用下划线变体,否则我们可能会在私有API使用方面得到错误结果。我为这些情况添加了一些运行时黑客技术,以动态地添加块转发器(主要用于UI/PST互操作性)。
Peter Steinberger (@steipete) 以及许多其他人!请参阅 贡献者 图表。感谢大家!
PSTCollectionView 是在 MIT 许可下可用的。有关更多信息,请参阅 LICENSE 文件。