为构建快速灵活列表而设计的数据驱动 UICollectionView
框架。
主要功能 | |
---|---|
永远不再调用 performBatchUpdates(_:, completion:) 或 reloadData() |
|
具有可重复使用的单元格和组件的更好架构 | |
创建包含多种数据类型的集合 | |
解耦的 diff 算法 | |
完全单元测试 | |
为您的模型自定义 diff 行为 | |
核心是简洁的 UICollectionView |
|
可扩展的 API | |
使用 Objective-C 编写,并完全支持 Swift 集成 |
IGListKit
是由 Instagram 工程师 构建和维护的。我们在 Instagram 应用中使用开源版本的 master
分支。
要求
- Xcode 9.0+
- iOS 9.0+
- tvOS 9.0+
- macOS 10.11+ (仅限 diff 算法组件)
- 与 Swift 3.0+ 兼容
安装
CocoaPods
首选的安装方法是使用 CocoaPods。请将以下内容添加到您的 Podfile
:
pod 'IGListKit', '~> 4.0.0'
Carthage
针对 Carthage 的用法,请在您的 Cartfile
中添加以下内容
github "Instagram/IGListKit" ~> 4.0.0
对于高级用法,请参阅我们的 安装指南。
入门指南
$ git clone https://github.com/Instagram/IGListKit.git
$ cd IGListKit/
$ ./scripts/setup.sh
- 我们的 入门指南
- Ray Wenderlich 的 IGListKit 教程:更好的 UICollectionViews
- 我们的 示例项目
- Ryan Nystrom 在 try! Swift NYC 的演讲 (注意:这个演讲针对的是早期版本。一些 API 已更改。)
- 将 UITableView 迁移到 IGListCollectionView,作者:Rodrigo Cavalcante
- 在 Buffer for iOS 中使用 AsyncDisplayKit, IGListKit & Pusher 保持数据刷新,作者:Andy Yates,Buffer
文档
您可以在 这里 找到文档。文档是用 jazzy 生成的,并在 GitHub-Pages 上托管。
要重新生成文档,从仓库的根目录运行 ./scripts/build_docs.sh
。
愿景
有关 IGListKit
的长期目标和“愿景”,请参阅我们的 愿景文档。
贡献
请参阅CONTRIBUTING文件了解如何贡献力量。在Instagram,我们每天同步IGListKit
的开源版本,所以我们总是测试最新的更改。但这需要所有更改都必须经过彻底测试,并遵循我们的风格指南。
我们有一系列入门任务,非常适合初学者加入并开始贡献力量。
许可证
IGListKit
遵循MIT许可证。
位于/Examples/
目录的文件遵循每个文件中指定的单独许可证。文档遵循CC-BY-4.0许可。