GitHub - kboy-silvergym/SnapLikeCollectionView: The collectionView library which...
source link: https://github.com/kboy-silvergym/SnapLikeCollectionView
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
? SnapLikeCollectionView ?
About
The collectionView library which is scaling, scrolling and stopping comfortably like Snapchat and Instagram.
This library is not perfect, so welcome to your PR ???
? This ? Instagram SnapchatRequirements
Swift 4.2. Ready for use on iOS 11.0+
Installation
via Cocoapods
pod 'SnapLikeCollectionView'
Usage
Cell
You should use SnapLikeCell protocol.
Item is associatedtype. You can apply any model you want.
This Item becomes dataSource's items.
public protocol SnapLikeCell: class { associatedtype Item var item: Item? { get set } }
Below is example.
import UIKit import SnapLikeCollectionView class SampleCell: UICollectionViewCell, SnapLikeCell { @IBOutlet weak var titleLabel: UILabel! var item: String? { didSet { titleLabel.text = item } } }
ViewController
import UIKit import SnapLikeCollectionView class ViewController: UIViewController { @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var collectionView: UICollectionView! // set your original Cell to <SampleCell> private var dataSource: SnapLikeDataSource<SampleCell>? override func viewDidLoad() { super.viewDidLoad() // setup size of cells let cellSize = SnapLikeCellSize(normal: 100, center: 160) // create dataSource dataSource = SnapLikeDataSource<SampleCell>(collectionView: collectionView, cellSize: cellSize) dataSource?.delegate = self // create FlowLayout let layout = SnapLikeCollectionViewFlowLayout(cellSize: cellSize) collectionView.collectionViewLayout = layout // setup collectionView like this collectionView.registerNib(SampleCell.self) collectionView.showsHorizontalScrollIndicator = false collectionView.decelerationRate = .fast collectionView.backgroundColor = .clear collectionView.delegate = dataSource collectionView.dataSource = dataSource // pass arrays which type is decided `Item` in the SampleCell. dataSource?.items = ["A", "B", "C", "D", "E"] } } // listen selected listener extension ViewController: SnapLikeDataDelegate { func cellSelected(_ index: Int) { DispatchQueue.main.async { [weak self] in let selectedItem: String = self?.dataSource?.items[index] ?? "" self?.titleLabel.text = selectedItem } } }
Check how to use from Demo ??
Author ?
KBOY (Kei Fujikawa)
iOS Developer in Tokyo Japan, working on AR startup named Graffity Inc.
License
SnapLikeCollectionView is available under the MIT license. See the LICENSE file for more info.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK