Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/D-32/DMSwipeCards

🃏 Tinder like card interface
https://github.com/D-32/DMSwipeCards

cards generic ios swift ui

Last synced: 3 months ago
JSON representation

🃏 Tinder like card interface

Awesome Lists containing this project

README

        

[![Version](https://img.shields.io/cocoapods/v/DMSwipeCards.svg?style=flat)](http://cocoadocs.org/docsets/DMSwipeCards)
![License](https://img.shields.io/cocoapods/l/DMSwipeCards.svg?style=flat)
[![twitter: @dylan36032](http://img.shields.io/badge/twitter-%40dylan36032-blue.svg?style=flat)](https://twitter.com/dylan36032)

![image](screenshot_1482145004.png)

## Features

- Swift 3
- Custom views for the card & overlay
- Generic
- Dynamically add new cards on top or on the bottom
- Lazy view loading

## Setup
```ruby
pod 'DMSwipeCards'
```

## Usage

First import the module:
```swift
import DMSwipeCards
```

Next create an instance of a `DMSwipeCardsView`:
(`Element` can be your custom model, or just `String`)
```swift
let swipeView = DMSwipeCardsView(frame: frame,
viewGenerator: viewGenerator,
overlayGenerator: overlayGenerator)
```
Views get loaded lazy, so you have to provide `DMSwipeCardsView` with a ViewGenerator and optionally an OverlayGenerator.
```swift
let viewGenerator: (String, CGRect) -> (UIView) = { (element: Element, frame: CGRect) -> (UIView) in
// return a UIView here
}

let overlayGenerator: (SwipeMode, CGRect) -> (UIView) = { (mode: SwipeMode, frame: CGRect) -> (UIView) in
// return a UIView here
}
```
### Adding cards

To add new cards, just call the `addCards` method with an array of the previously defined `Element`:
```swift
swipeView.addCards([Element], onTop: true)
```
### Delegate

`DMSwipeCardsView` has a delegate property so you can get informed when a card has been swipped. The delegate has to implement following methods:
```swift
func swipedLeft(_ object: Any)
func swipedRight(_ object: Any)
func cardTapped(_ object: Any)
func reachedEndOfStack()
```
The `object` parameter is guarenteed to have the type `Element`. Sadly generics don't work here.

## Example

For a nice working demo sample, please take a look the [Example](https://github.com/D-32/DMSwipeCards/tree/master/Example) project.
To run the example, first run `pod install` in the `Example` directory.

## Credits
Loosly based on [TinderSimpleSwipeCards](https://github.com/cwRichardKim/TinderSimpleSwipeCards)