[swift3.0]手勢

  1. /  
  2. //  Created by jiezhang on 14-10-4.  
  3. //  Copyright (c) 2014年 jiezhang. All rights reserved.  
  4. //  
  5.   
  6. import UIKit  
  7.   
  8. class ViewController: UIViewController, UIActionSheetDelegate {  
  9.       
  10.     @IBOutlet var im: UIImageView!  
  11.     var lastScaleFactor : CGFloat! = 1  //放大、縮小  
  12.     var netRotation : CGFloat = 1;//旋轉  
  13.     var netTranslation : CGPoint!//平移  
  14.     var images : NSArray = ["meinv1.jpg","mv2.jpg","mv3.jpg","mv4.jpg","mv5.jpg","mv6.jpg"]// 圖片數組  
  15.     var imageIndex : Int = 0 //數組下標  
  16.   
  17.       
  18.     required init(coder aDecoder: NSCoder) {  
  19.         super.init(coder: aDecoder)  
  20.         netTranslation = CGPoint(x: 0, y0)  
  21.     }  
  22.       
  23.     override func viewDidLoad() {  
  24.         super.viewDidLoad()  
  25.         
  26.           
  27.         var tapGesture = UITapGestureRecognizer(target: self, action"handleTapGesture:")  
  28.         //設置手勢點擊數,雙擊:點2下  
  29.         tapGesture.numberOfTapsRequired = 2  
  30.         self.view.addGestureRecognizer(tapGesture)  
  31.           
  32.         //手勢爲捏的姿勢:按住option按鈕配合鼠標來做這個動作在虛擬器上  
  33.         var pinchGesture = UIPinchGestureRecognizer(target: self, action"handlePinchGesture:")  
  34.         self.view.addGestureRecognizer(pinchGesture)  
  35.           
  36.         //旋轉手勢:按住option按鈕配合鼠標來做這個動作在虛擬器上  
  37.         var rotateGesture = UIRotationGestureRecognizer(target: self, action"handleRotateGesture:")  
  38.         self.view.addGestureRecognizer(rotateGesture)  
  39.           
  40.         //拖手勢  
  41.         var panGesture = UIPanGestureRecognizer(target: self, action"handlePanGesture:")  
  42. //        self.view.addGestureRecognizer(panGesture)  
  43.           
  44.         //划動手勢  
  45.         //右劃  
  46.         var swipeGesture = UISwipeGestureRecognizer(target: self, action"handleSwipeGesture:")  
  47.         self.view.addGestureRecognizer(swipeGesture)  
  48.         //左劃  
  49.         var swipeLeftGesture = UISwipeGestureRecognizer(target: self, action"handleSwipeGesture:")  
  50.         swipeLeftGesture.direction = UISwipeGestureRecognizerDirection.Left //不設置是右  
  51.         self.view.addGestureRecognizer(swipeLeftGesture)  
  52.           
  53.         //長按手勢  
  54.         var longpressGesutre = UILongPressGestureRecognizer(target: self, action"handleLongpressGesture:")  
  55.         //長按時間爲1秒  
  56.         longpressGesutre.minimumPressDuration = 1  
  57.         //允許15秒運動  
  58.         longpressGesutre.allowableMovement = 15  
  59.         //所需觸摸1次  
  60.         longpressGesutre.numberOfTouchesRequired = 1  
  61.         self.view.addGestureRecognizer(longpressGesutre)  
  62.     }  
  63.   
  64.     override func didReceiveMemoryWarning() {  
  65.         super.didReceiveMemoryWarning()  
  66.         // Dispose of any resources that can be recreated.  
  67.     }  
  68.       
  69.     //雙擊屏幕時會調用此方法,放大和縮小圖片  
  70.     func handleTapGesture(sender: UITapGestureRecognizer){  
  71.         //判斷imageView的內容模式是否是UIViewContentModeScaleAspectFit,該模式是原比例,按照圖片原時比例顯示大小   
  72.         if im.contentMode == UIViewContentMode.ScaleAspectFit{  
  73.             //把imageView模式改成UIViewContentModeCenter,按照圖片原先的大小顯示中心的一部分在imageView  
  74.            im.contentMode = UIViewContentMode.Center  
  75.         }else{  
  76.             im.contentMode = UIViewContentMode.ScaleAspectFit  
  77.         }  
  78.     }  
  79.       
  80.     //捏的手勢,使圖片放大和縮小,捏的動作是一個連續的動作  
  81.     func handlePinchGesture(sender: UIPinchGestureRecognizer){  
  82.         var factor = sender.scale  
  83.         if factor > 1{  
  84.             //圖片放大  
  85.             im.transform = CGAffineTransformMakeScale(lastScaleFactor+factor-1, lastScaleFactor+factor-1)  
  86.         }else{  
  87.             //縮小  
  88.             im.transform = CGAffineTransformMakeScale(lastScaleFactor*factor, lastScaleFactor*factor)  
  89.         }  
  90.         //狀態是否結束,如果結束保存數據  
  91.         if sender.state == UIGestureRecognizerState.Ended{  
  92.             if factor > 1{  
  93.                 lastScaleFactor = lastScaleFactor + factor - 1  
  94.             }else{  
  95.                 lastScaleFactor = lastScaleFactor * factor  
  96.             }  
  97.         }  
  98.     }  
  99.       
  100.     //旋轉手勢  
  101.     func handleRotateGesture(sender: UIRotationGestureRecognizer){  
  102.         //浮點類型,得到sender的旋轉度數   
  103.         var rotation : CGFloat = sender.rotation  
  104.         //旋轉角度CGAffineTransformMakeRotation,改變圖像角度  
  105.         im.transform = CGAffineTransformMakeRotation(rotation+netRotation)  
  106.         //狀態結束,保存數據  
  107.         if sender.state == UIGestureRecognizerState.Ended{  
  108.             netRotation += rotation  
  109.         }  
  110.     }  
  111.     //拖手勢  
  112.     func handlePanGesture(sender: UIPanGestureRecognizer){  
  113.         //得到拖的過程中的xy座標  
  114.         var translation : CGPoint = sender.translationInView(im)  
  115.         //平移圖片CGAffineTransformMakeTranslation  
  116.         im.transform = CGAffineTransformMakeTranslation(netTranslation.x+translation.x, netTranslation.y+translation.y)  
  117.         if sender.state == UIGestureRecognizerState.Ended{  
  118.             netTranslation.x += translation.x  
  119.             netTranslation.y += translation.y  
  120.         }  
  121.     }  
  122.     //划動手勢  
  123.     func handleSwipeGesture(sender: UISwipeGestureRecognizer){  
  124.         //划動的方向  
  125.         var direction = sender.direction  
  126.         //判斷是上下左右  
  127.         switch (direction){  
  128.         case UISwipeGestureRecognizerDirection.Left:  
  129.             println("Left")  
  130.             imageIndex++;//下標++  
  131.             break  
  132.         case UISwipeGestureRecognizerDirection.Right:  
  133.             println("Right")  
  134.             imageIndex--;//下標--  
  135.             break  
  136.         case UISwipeGestureRecognizerDirection.Up:  
  137.             println("Up")  
  138.             break  
  139.         case UISwipeGestureRecognizerDirection.Down:  
  140.             println("Down")  
  141.             break  
  142.         default:  
  143.             break;  
  144.         }  
  145.         //得到不越界不<0的下標  
  146.         imageIndex = imageIndex < 0 ? images.count-1:imageIndex%images.count  
  147.         //imageView顯示圖片  
  148.         im.image = UIImage(named: images[imageIndex] as String)  
  149.     }  
  150.       
  151.     //長按手勢  
  152.     func handleLongpressGesture(sender : UILongPressGestureRecognizer){  
  153.           
  154.         if sender.state == UIGestureRecognizerState.Began{  
  155.             //創建警告  
  156.             var actionSheet = UIActionSheet(title: "Image options", delegateself, cancelButtonTitle"cancel", destructiveButtonTitle"ok", otherButtonTitles"other")  
  157.             actionSheet.showInView(self.view)  
  158.         }  
  159.     }  
  160. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章