A Swift library that simplifies UICollectionView data source and delegate configuration with type safety and diffing-based reloads.
Conv is a Swift library that simplifies working with UICollectionView by providing a declarative API for defining data structures. It addresses common UIKit pain points like type-unsafe cell dequeuing, scattered delegate methods, and manual array indexing by offering a more intuitive and type-safe way to configure collection views.
iOS developers building complex UICollectionView interfaces who want to reduce boilerplate, improve type safety, and manage data source and delegate logic more cleanly.
Developers choose Conv for its declarative syntax that closely mirrors UICollectionView's hierarchy, its built-in diffing for efficient updates, and its elimination of manual type casting, making collection view code more maintainable and less error-prone.
Conv smart represent UICollectionView data structure more than UIKit.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables hierarchical definition of sections, items, headers, and footers that closely mirrors UICollectionView's structure, as shown in the nested closure syntax in the usage example, improving readability.
Eliminates manual cell dequeuing and casting by providing typed cells in configuration closures, reducing runtime errors and boilerplate, demonstrated with Item<ListCollectionViewCell> in the code snippets.
Uses Paul Heckel's algorithm to calculate minimal changes for reloads, enabling smooth animations and performance, highlighted with animated gifs of insert, delete, and move operations.
Keeps data source and delegate methods together in the same code block, such as cell configuration and selection handlers defined in item closures, enhancing maintainability.
Requires all models to conform to the Differenciable protocol, adding extra code for each data type, as seen in the SectionType and ItemModel extensions in the README.
The closure-based API leads to deeply nested code, which can be cumbersome for simple layouts or developers accustomed to more straightforward UIKit methods.
Exclusively targets iOS and UICollectionView, with no built-in support for other platforms like macOS or cross-platform frameworks, restricting its use in broader applications.