Used scratch card option to reward it's user

GLScratchCard

I loved the way payments app's like Google pay and PhonePe used scratch card option to reward it's user. Hence with yellow_heart cloned the same scratch card effect for you guys out there.

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

GLScratchCard XCode 10 and Swift 4.2. With deployment target 11.0.

Installation

Cocoapods

GLScratchCard is available through CocoaPods. To install

it, simply add the following line to your Podfile:


pod 'GLScratchCard'

Manual

Copy the files from ~/Pods/DevelopmentPods/GLScratchCard/ to your project.

User Guide

Basic Usage

let controller = GLScratchCardController()
controller.scratchCardView.addDelegate(delegate: self)
controller.scratchCardView.bottomLayerView = UIImageView(image: UIImage(named: "cash_back"))
controller.scratchCardView.topLayerImage = UIImage(named:"scratch_image")!
controller.presentScratchController()

Break Down

let controller = GLScratchCardController()

Setting up Components

Titles to be shown initilly, before scratch starts

controller.scratchCardView.doneButtonTitle = "Gift to a friend"
controller.scratchCardView.scratchCardTitle = "Earn up to ₹1,0000"
controller.scratchCardView.scratchCardSubTitle = "From Google Pay \nEarned for paying \nGokul"

Title to be show after scratch ends,

controller.scratchCardView.afterScratchDoneButtonTitle = "Done"
controller.scratchCardView.afterScratchTitle = "Woohoo!"
controller.scratchCardView.afterScratchSubTitle = "Expect payment within a weak."

Top layer image view,

controller.scratchCardView.topLayerImage = UIImage(named:"scratch_image")!

Bottom layer image view (one that will be reviled after scratching ends),

controller.scratchCardView.bottomLayerView = UIImageView(image: UIImage(named: "cash_back"))

Can customise scratch size and shape (.round, .square, .butt),

controller.scratchCardView.scratchCardImageView.lineWidth = 50
controller.scratchCardView.scratchCardImageView.lineType = .round

Delegates

  1. GLScratchCardDelegate
  2. GLScratchCarImageViewDelegate

Add delegates,

controller.scratchCardView.addDelegate(delegate: self)
controller.scratchCardView.scratchCardImageView.addDelegate(delegate:self)

GLScratchCardDelegate

func didCloseButtonPressed(sender: UIButton)
func didDoneButtonPressed(sender: UIButton)

GLScratchCarImageViewDelegate

func scratchpercentageDidChange(value: Float)
func didScratchStarted()
func didScratchEnded()

GitHub