Skip to content

freesuraj/SPTinderView

Repository files navigation

SPTinderView

build-status Twitter CocoaPods

A clone of standard Tinder app's swipe left swipe right view

screenshot

Installation

CocoaPods
  pod SPTinderView
Manual:

Copy the swift files in Source directory

Usage

There are two main classes: SPTinderView is a subclass of UIView which acts as the container for all the cards (aka Cells) in the tinder view. The card is represented by SPTinderViewCell class which is also a subclass of UIView.

It can be used similar to how a UITableView is used with SPTinderView being equivalent to UITableView and SPTinderViewCell being equivalent to UITableViewCell

  • Add SPTinderView to your view, set the delegate and dataSource
  • Set your custom cell by subclassing SPTinderViewCell
  • Register this class or nib to the SPTinderView using the method registerClass: forIdentifier: or registerNib: forIdentifier:
  • Implement the dataSource and delegate methods.

Example

This example can be found in the project as well.

  1. Define Custom SPTinderViewCell
class MyTinderCell: SPTinderViewCell {
    let titleLabel: UILabel = UILabel(frame: CGRectZero)
    let imageView: UIImageView = UIImageView(frame: CGRectZero)

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    required init(reuseIdentifier: String) {
        super.init(reuseIdentifier: reuseIdentifier)
        self.frame = CGRect(origin: CGPointZero, size: CGSize(width: 300, height: 400))
        titleLabel.frame = CGRectMake(0, self.frame.height - 50, self.frame.width, 50)
        imageView.frame = CGRectMake(0, 0, self.frame.width, self.frame.height - 50)
        imageView.clipsToBounds = true
        imageView.contentMode = .ScaleAspectFill
        titleLabel.textAlignment = .Center
        self.addSubview(imageView)
        self.addSubview(titleLabel)
    }
}
  1. Set SPTinderView and set dataSoruce and delegate
class ViewController: UIViewController {
    @IBOutlet var tinderView: SPTinderView!
    let cellIdentifier = "MyTinderCell"

    override func viewDidLoad() {
        super.viewDidLoad()
        tinderView.frame = self.view.frame
        tinderView.registerClass(MyTinderCell.self, forCellReuseIdentifier: cellIdentifier)
        tinderView.dataSource = self
        tinderView.delegate = self
        tinderView.backgroundColor = UIColor.whiteColor()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
  1. Implement the dataSource and delegate methods
extension ViewController: SPTinderViewDataSource, SPTinderViewDelegate {
    func numberOfItemsInTinderView(view: SPTinderView) -> Int {
        return 20
    }

    func tinderView(view: SPTinderView, cellAt index: Int) -> SPTinderViewCell? {
        if let cell = tinderView.dequeueReusableCellWithIdentifier(cellIdentifier) as? MyTinderCell {
            cell.titleLabel.text = "Model No: \(index+1)"
            cell.imageView.image = TinderModel.randomImage()
            return cell
        }
        return nil
    }

    func tinderView(view: SPTinderView, didMoveCellAt index: Int, towards direction: SPTinderViewCellMovement) {
        print("\(direction)")
    }
}

Contribution

All the contributions are welcome ! Fork, change and send a pull request.