-
- import UIKit
-
- class ViewController: UIViewController, UIActionSheetDelegate {
-
- @IBOutlet var im: UIImageView!
- var lastScaleFactor : CGFloat! = 1
- var netRotation : CGFloat = 1;
- var netTranslation : CGPoint!
- var images : NSArray = ["meinv1.jpg","mv2.jpg","mv3.jpg","mv4.jpg","mv5.jpg","mv6.jpg"]
- var imageIndex : Int = 0
-
-
- required init(coder aDecoder: NSCoder) {
- super.init(coder: aDecoder)
- netTranslation = CGPoint(x: 0, y: 0)
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
-
- var tapGesture = UITapGestureRecognizer(target: self, action: "handleTapGesture:")
-
- tapGesture.numberOfTapsRequired = 2
- self.view.addGestureRecognizer(tapGesture)
-
-
- var pinchGesture = UIPinchGestureRecognizer(target: self, action: "handlePinchGesture:")
- self.view.addGestureRecognizer(pinchGesture)
-
-
- var rotateGesture = UIRotationGestureRecognizer(target: self, action: "handleRotateGesture:")
- self.view.addGestureRecognizer(rotateGesture)
-
-
- var panGesture = UIPanGestureRecognizer(target: self, action: "handlePanGesture:")
-
-
-
- var swipeGesture = UISwipeGestureRecognizer(target: self, action: "handleSwipeGesture:")
- self.view.addGestureRecognizer(swipeGesture)
-
- var swipeLeftGesture = UISwipeGestureRecognizer(target: self, action: "handleSwipeGesture:")
- swipeLeftGesture.direction = UISwipeGestureRecognizerDirection.Left
- self.view.addGestureRecognizer(swipeLeftGesture)
-
-
- var longpressGesutre = UILongPressGestureRecognizer(target: self, action: "handleLongpressGesture:")
-
- longpressGesutre.minimumPressDuration = 1
-
- longpressGesutre.allowableMovement = 15
-
- longpressGesutre.numberOfTouchesRequired = 1
- self.view.addGestureRecognizer(longpressGesutre)
- }
-
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
-
- }
-
-
- func handleTapGesture(sender: UITapGestureRecognizer){
-
- if im.contentMode == UIViewContentMode.ScaleAspectFit{
-
- im.contentMode = UIViewContentMode.Center
- }else{
- im.contentMode = UIViewContentMode.ScaleAspectFit
- }
- }
-
-
- func handlePinchGesture(sender: UIPinchGestureRecognizer){
- var factor = sender.scale
- if factor > 1{
-
- im.transform = CGAffineTransformMakeScale(lastScaleFactor+factor-1, lastScaleFactor+factor-1)
- }else{
-
- im.transform = CGAffineTransformMakeScale(lastScaleFactor*factor, lastScaleFactor*factor)
- }
-
- if sender.state == UIGestureRecognizerState.Ended{
- if factor > 1{
- lastScaleFactor = lastScaleFactor + factor - 1
- }else{
- lastScaleFactor = lastScaleFactor * factor
- }
- }
- }
-
-
- func handleRotateGesture(sender: UIRotationGestureRecognizer){
-
- var rotation : CGFloat = sender.rotation
-
- im.transform = CGAffineTransformMakeRotation(rotation+netRotation)
-
- if sender.state == UIGestureRecognizerState.Ended{
- netRotation += rotation
- }
- }
-
- func handlePanGesture(sender: UIPanGestureRecognizer){
-
- var translation : CGPoint = sender.translationInView(im)
-
- im.transform = CGAffineTransformMakeTranslation(netTranslation.x+translation.x, netTranslation.y+translation.y)
- if sender.state == UIGestureRecognizerState.Ended{
- netTranslation.x += translation.x
- netTranslation.y += translation.y
- }
- }
-
- func handleSwipeGesture(sender: UISwipeGestureRecognizer){
-
- var direction = sender.direction
-
- switch (direction){
- case UISwipeGestureRecognizerDirection.Left:
- println("Left")
- imageIndex++;
- break
- case UISwipeGestureRecognizerDirection.Right:
- println("Right")
- imageIndex--;
- break
- case UISwipeGestureRecognizerDirection.Up:
- println("Up")
- break
- case UISwipeGestureRecognizerDirection.Down:
- println("Down")
- break
- default:
- break;
- }
-
- imageIndex = imageIndex < 0 ? images.count-1:imageIndex%images.count
-
- im.image = UIImage(named: images[imageIndex] as String)
- }
-
-
- func handleLongpressGesture(sender : UILongPressGestureRecognizer){
-
- if sender.state == UIGestureRecognizerState.Began{
-
- var actionSheet = UIActionSheet(title: "Image options", delegate: self, cancelButtonTitle: "cancel", destructiveButtonTitle: "ok", otherButtonTitles: "other")
- actionSheet.showInView(self.view)
- }
- }
- }
注意:滑动手势和拖手势冲突,两个选一个测试,至于测试的效果自己新建一个工程来把代码加入就行
Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)
原文:http://www.cnblogs.com/Free-Thinker/p/5280770.html