👻 SnapLikeCollectionView👻
关于
这是一个类似 Snapchat 和 Instagram 的集合视图库,它的缩放、滚动和停止都很舒适。
示例1
与 Instagram 和 Snapchat 的比较。
Snapchat | ||
---|---|---|
![]() |
![]() |
![]() |
示例2
自 1.1.0 版本起,您可以更改单元高度。
要求
Swift 4.2. 可在 iOS 11.0+ 上的使用
安装
via Cocoapods
pod 'SnapLikeCollectionView'
使用方法
单元格
应该使用 SnapLikeCell 协议。
Item 是关联类型。您可以应用任何您想要的模型。
此 Item 成为数据源的项目。
public protocol SnapLikeCell: class {
associatedtype Item
var item: Item? { get set }
}
下面是一个示例。
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
}
}
}
请检查示例中的使用方法
欢迎来到你的PR
这个库并不完美,所以欢迎你的PR 🤲🤲🤲
👻
作者
KBOY (Kei Fujikawa)
日本东京的iOS开发者,在名为 Graffity Inc. 的AR初创公司工作
许可
SnapLikeCollectionView 在MIT许可证下可用。更多信息请参阅LICENSE文件。