Skip to content

Instantly share code, notes, and snippets.

@chris9753
Created January 27, 2015 00:23
Show Gist options
  • Save chris9753/4e02f73405f1ebafb971 to your computer and use it in GitHub Desktop.
Save chris9753/4e02f73405f1ebafb971 to your computer and use it in GitHub Desktop.
Tinder Swipe Effect For IOS8 (SWIFT)
//Global Variables
var alphaX : CGFloat = 0
var orgState : CGPoint = CGPoint()
override func viewDidLoad() {
super.viewDidLoad()
//Adding the Label
var label: UILabel = UILabel(frame: CGRectMake(self.view.bounds.width/2 - 100 , self.view.bounds.height/2 - 50, 200, 100))
orgState = label.center
label.text = "Drag Me!"
label.textAlignment = NSTextAlignment.Center
self.view.addSubview(label)
//Attaching Gesture Recognition to Label
var gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:"))
label.addGestureRecognizer(gesture)
label.userInteractionEnabled = true
}
func wasDragged(gesture : UIPanGestureRecognizer){
//Vector Translations
let translation = gesture.translationInView(self.view)
alphaX += (translation.x * 3.14/180)
var label = gesture.view!
label.center = CGPoint(x: label.center.x + translation.x, y: label.center.y + translation.y)
gesture.setTranslation(CGPointZero, inView: self.view)
//Transformations
var transformVar = min(abs(2/* size/speed factor decimal *//alphaX ),1)
var rotation:CGAffineTransform = CGAffineTransformMakeRotation(alphaX/9)
var scale: CGAffineTransform = CGAffineTransformScale(rotation, transformVar,transformVar)
label.transform = scale
gesture.view!.alpha = 1-(min(abs(alphaX/10),1))
//StateCheck
if gesture.state==UIGestureRecognizerState.Ended {
if label.center.x < 100 {
println("Not Chosen")
//refresh view/change image
} else if label.center.x > self.view.bounds.width - 90 {
println("Chosen")
//refresh view/change image
} else {
UIView.animateWithDuration(0.3, animations: { () -> Void in
label.center = self.orgState
label.transform = CGAffineTransformIdentity
})
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment