SnapLikeCollectionView 1.1.0

SnapLikeCollectionView 1.1.0

Kei Fujikawax 维护。



👻SnapLikeCollectionView👻

platform ios swift license tw

关于

这是一个类似 Snapchat 和 Instagram 的集合视图库,它的缩放、滚动和停止都很舒适。

示例1

与 Instagram 和 Snapchat 的比较。

👻这是👻 Instagram 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文件。