Poi: You can use tinder UI like tableview method

Poi

You can use tinder UI like tableview method

Installation

Manual Installation

  1. Use this command
git clone git@github.com:HideakiTouhara/Poi.git
  1. Import Poi.xcodeproj to your project

  1. Add Poi.frameworkiOS to Embedded Binaries

Cocoa Pods

Please write the below code in Podfile

pod ‘Poi’

Carthage

Write this code in your Cartfile.

github "HideakiTouhara/Poi"

and implement this command

carthage update

Add Poi.framework in /Carthage/Build/iOS/ to Embedded Binaries.

Usage

Create PoiView in storyboard or swift file

import Poi

@IBOutlet weak var poiView: PoiView!
// Change View's class to PoiView in Attributes inspector.

or

import Poi

let poiView = PoiView()
self.view.addSubView(poiView)

Conform to PoiViewDataSource and PoiViewDelegate

class ViewController: UIViewController, PoiViewDataSource, PoiViewDelegate {

Designate delegate target.

Please put this code after setting card contents.

poiView.dataSource = self
poiView.delegate = self

PoiViewDataSource method

Set swipeable card number(required method)

func numberOfCards(_ poi: PoiView) -> Int

Set swipeable card(required method)

func poi(_ poi: PoiView, viewForCardAt index: Int) -> UIView

Set overlay image if right or left swiped

func poi(_ poi: PoiView, viewForCardOverlayFor direction: SwipeDirection) -> UIImageView? {
    switch direction {
    case .right:
        return UIImageView(image: #imageLiteral(resourceName: "good"))
    case .left:
        return UIImageView(image: #imageLiteral(resourceName: "bad"))
    }
}

PoiViewDelegate method

When did swipe, this method is called

func poi(_ poi: PoiView, didSwipeCardAt: Int, in direction: SwipeDirection)

When last card was swiped, this method is called

func poi(_ poi: PoiView, runOutOfCardAt: Int, in direction: SwipeDirection)

Public method

Swipe current card

func swipeCurrentCard(to direction: SwipeDirection)

Undo animation and go back previous card

func undo()

Example

Check the Example file!

import UIKit
import Poi

class ViewController: UIViewController, PoiViewDataSource, PoiViewDelegate {

    @IBOutlet weak var poiView: PoiView!

    var sampleCards = [UIView]()

    override func viewDidLoad() {
        super.viewDidLoad()
        var colors = [UIColor.red, UIColor.orange]
        for i in (0..<2) {
            sampleCards.append(UIView(frame: CGRect(x: 0, y: 0, width: 240, height: 128)))
            sampleCards[i].backgroundColor = colors[i]
        }
        poiView.dataSource = self
        poiView.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    // MARK: PoiViewDataSource
    func numberOfCards(_ poi: PoiView) -> Int {
        return 2
    }

    func poi(_ poi: PoiView, viewForCardAt index: Int) -> UIView {
        return sampleCards[index]
    }

    func poi(_ poi: PoiView, viewForCardOverlayFor direction: SwipeDirection) -> UIImageView? {
        switch direction {
        case .right:
            return UIImageView(image: #imageLiteral(resourceName: "good"))
        case .left:
            return UIImageView(image: #imageLiteral(resourceName: "bad"))
        }
    }

    // MARK: PoiViewDelegate
    func poi(_ poi: PoiView, didSwipeCardAt: Int, in direction: SwipeDirection) {
        switch direction {
        case .left:
            print("left")
        case .right:
            print("right")
        }
    }

    func poi(_ poi: PoiView, runOutOfCardAt: Int, in direction: SwipeDirection) {
        print("last")
    }

    // MARK: IBAction
    @IBAction func OKAction(_ sender: UIButton) {
        poiView.swipeCurrentCard(to: .right)
    }

    @IBAction func undo(_ sender: UIButton) {
        poiView.undo()
    }
}

Contribution

Please create issues or submit pull requests for anything.

License

Poi is released under the MIT license.

© 2018 GitHub, Inc.

GitHub

https://github.com/HideakiTouhara/Poi