CollectionView
is a SwiftUI wrapper of UICollectionView
.
Have you ever wanted to make an app solely in SwiftUI, but the processing tradeoff of using Grid
, Lazy_Stack
, and Lazy_Grid
are too significant? Wish you could stick with SwiftUI but still get the processing power of UICollectionView
? Then try out CollectionView!
It’s a SwiftUI wrapper for UICollectionView
that exposes all UICollectionViewDelegate
/UICollectionViewDataSourcePrefetching
delegate functions (via view modifiers). Plus, on iOS 16+, you can utilize UIHostingConfiguration
to use SwiftUI views for the cells.
Plus, by passing your data source as a Binding
, it updates changes to the view using UICollectionViewDiffableDataSource
. This also means it doesn't fully reload the view on every change, but rather, they're reloaded internally by the UICollectionView
.
It’s still a work in progress (especially with testing everything + documentation), but please give it a try and send feedback my way!
- Make sure to use
.ignoresSafeArea()
if it's meant to be full-screen.
- Implement
UICellConfigurationState
. - Add support for
NSCollectionView
. - Make sure
CollectionView
isn't updating itself more than necessary? or is it not because it's aRepresentableView
? - Condense initializers somehow...
- Add support for section snapshots.
- Add support for expandable sections.
- Add support for section headers/footers.
- Refactor
cellRegistrationHandler
out of primary initializers and replace with aUICollectionViewDiffableDataSource<Section, Item>.CellProvider
closure to allow for more complicated configurations. - Finish documenting view modifiers.
- Work on more concrete example for README/DocC articles.