CollectionViewTools
Effective framework, similar to TableViewTools for making your UICollectionView usage simple and comfortable. It allows you to move UICollectionView configuration and interaction logic to separated objects and simply register, add and remove cells from the collection view.
Features
- Separate layer that synchronizes data with the cell appearance
- Full implementation of UICollectionViewDelegate and UICollectionViewDataSource under the hood
- Support of protocols and subclasses as data models
- No type casts and switches required
Requirements
- iOS 8.0+
- Xcode 8.0+
Installation
Carthage
Create a Cartfile
that lists the framework and run carthage update
. Follow the instructions to add the framework to your project.
github "rosberry/CollectionViewTools"
CocoaPods
You can use CocoaPods to install Product Name
by adding it to your Podfile
:
platform :ios, '8.0'
use_frameworks!
pod 'CollectionViewTools'
Manually
Drag Sources
folder from last release into your project.
Usage
Creating manager
manager = CollectionViewManager(collectionView: collectionView)
Creating section
let titles = ["Item 1", "Item 2", "Item 3"]
var cellItems = [ExampleCollectionViewCellItem]()
titles.forEach { title in
let cellItem = ExampleCollectionViewCellItem(title: title)
cellItems.append(cellItem)
}
let sectionItem = CollectionViewSectionItem(cellItems: cellItems)
manager.sectionItems = [sectionItem]
Cell item implementation
class ExampleCollectionViewCellItem: CollectionViewCellItemProtocol {
private let title: String
var reuseType = ReuseType(cellClass: ExampleCollectionViewCell.self)
init(title: String) {
self.title = title
}
func size(for collectionView: UICollectionView, at indexPath: IndexPath) -> CGSize {
return CGSize(width: 100, height: 40)
}
func cell(for collectionView: UICollectionView, at indexPath: IndexPath) -> UICollectionViewCell {
let cell: ExampleCollectionViewCell = collectionView.dequeueReusableCell(for: indexPath)
cell.titleLabel.text = title
return cell
}
func size(for collectionView: UICollectionView, with layout: UICollectionViewLayout, at indexPath: IndexPath) -> CGSize {
return size(for: collectionView, at: indexPath)
}
}
Authors
- Dmitry Frishbuter, [email protected]
- Artem Novichkov, [email protected]
About
This project is owned and maintained by Rosberry. We build mobile apps for users worldwide
Check out our open source projects, read our blog or give us a high-five on
License
Product Name is available under the MIT license. See the LICENSE file for more info.