Build Status Coverage Status Pods Version Platforms Carthage Compatible

---------------- 一个数据驱动的`UICollectionView`框架,用于构建快速灵活的列表。 | | 主要特性 | ----------|----------------- 🙅 | 无须直接调用 `performBatchUpdates(_:, completion:)` 或 `reloadData()` 🏠 | 更好的可复用 cell 和组件体系结构 🔠 | 创建具有多个数据类型的列表 🔑 | 解耦的 Diff 算法 ✅ | 完全的单元测试 🔍 | 可自定义数据模型的 Diff 行为 📱 | 简化并维持`UICollectionView`的核心特性 🚀 | 可扩展的 API 设计 🐦 | Objective-C 编写,同时完全支持 Swift `IGListKit`由 [Instagram 工程师](https://engineering.instagram.com/) 创建 并且❤️ 维护。 我们在 Instagram 中使用开源的`main`主版本。 ## 多语言翻译 [英文README](README.md) ## 要求 - Xcode 11.0+ - iOS 11.0+ - tvOS 11.0+ - macOS 10.13+ *(diffing algorithm components only)* - Interoperability with Swift 3.0+ ## 安装 ### CocoaPods 推荐使用[CocoaPods](https://cocoapods.org)来进行安装,只需添加如下语句到你的`Podfile`文件中: ```ruby pod 'IGListKit', '~> 4.0.0' ``` ### Carthage 对于[Carthage](https://github.com/Carthage/Carthage), 添加如下到`Cartfile`文件中: ```ogdl github "Instagram/IGListKit" ~> 3.0 ``` > 对于高级用法, 查阅 [安装指南](https://instagram.github.io/IGListKit/installation.html)。 ## 入门指南 ```bash $ git clone https://github.com/Instagram/IGListKit.git $ cd IGListKit/ $ ./scripts/setup.sh ``` - [入门指南](https://instagram.github.io/IGListKit/getting-started.html) - Ray Wenderlich's [IGListKit Tutorial: Better UICollectionViews](https://www.raywenderlich.com/147162/iglistkit-tutorial-better-uicollectionviews) - [样例项目](https://github.com/Instagram/IGListKit/tree/main/Examples) - Ryan Nystrom's [talk at try! Swift NYC](https://realm.io/news/tryswift-ryan-nystrom-refactoring-at-scale-lessons-learned-rewriting-instagram-feed/) (Note: this talk was for an earlier version. Some APIs have changed.) - [Migrating an UITableView to IGListCollectionView](https://medium.com/cocoaacademymag/iglistkit-migrating-an-uitableview-to-iglistkitcollectionview-65a30cf9bac9), by Rodrigo Cavalcante - [Keeping data fresh in Buffer for iOS with AsyncDisplayKit, IGListKit & Pusher](https://overflow.buffer.com/2017/04/10/keeping-data-fresh-buffer-ios-asyncdisplaykit-iglistkit-pusher/), Andy Yates, Buffer ## 文档 [这里可以查阅文档](https://instagram.github.io/IGListKit)。文档由[jazzy](https://github.com/realm/jazzy)生成,托管在 [GitHub-Pages](https://pages.github.com)。 运行位于仓库根目录下的`./scripts/build_docs.sh`脚本来生成文档。 ## 远景 想要了解`IGListKit`的长期目标和愿景,请阅读[Vision](https://github.com/Instagram/IGListKit/blob/main/Guides/VISION.md)。 ## 贡献 请查看[CONTRIBUTING](https://github.com/Instagram/IGListKit/blob/main/.github/CONTRIBUTING.md)来了解如何参与贡献。在 Instagram,我们每日都会同步开源版本的`IGListKit`,因此我们总是在测试最新的改动。但是这也需要所有的改动都需要经历完全的测试,并且遵守我们的开发风格。 我们有一系列[新人任务](https://github.com/Instagram/IGListKit/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task),来帮助新人学习如何参入其中。 ## License `IGListKit` 遵循[MIT-licensed](./LICENSE)。 `/Examples/`目录下的文件,在文档里指明了它们各自所遵循的协议。文档遵循[CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)。