- /
- // Created by jiezhang on 14-10-4.
- // Copyright (c) 2014年 jiezhang. All rights reserved.
- //
- 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:")
- //設置手勢點擊數,雙擊:點2下
- tapGesture.numberOfTapsRequired = 2
- self.view.addGestureRecognizer(tapGesture)
- //手勢爲捏的姿勢:按住option按鈕配合鼠標來做這個動作在虛擬器上
- var pinchGesture = UIPinchGestureRecognizer(target: self, action: "handlePinchGesture:")
- self.view.addGestureRecognizer(pinchGesture)
- //旋轉手勢:按住option按鈕配合鼠標來做這個動作在虛擬器上
- var rotateGesture = UIRotationGestureRecognizer(target: self, action: "handleRotateGesture:")
- self.view.addGestureRecognizer(rotateGesture)
- //拖手勢
- var panGesture = UIPanGestureRecognizer(target: self, action: "handlePanGesture:")
- // self.view.addGestureRecognizer(panGesture)
- //划動手勢
- //右劃
- 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:")
- //長按時間爲1秒
- longpressGesutre.minimumPressDuration = 1
- //允許15秒運動
- longpressGesutre.allowableMovement = 15
- //所需觸摸1次
- longpressGesutre.numberOfTouchesRequired = 1
- self.view.addGestureRecognizer(longpressGesutre)
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- //雙擊屏幕時會調用此方法,放大和縮小圖片
- func handleTapGesture(sender: UITapGestureRecognizer){
- //判斷imageView的內容模式是否是UIViewContentModeScaleAspectFit,該模式是原比例,按照圖片原時比例顯示大小
- if im.contentMode == UIViewContentMode.ScaleAspectFit{
- //把imageView模式改成UIViewContentModeCenter,按照圖片原先的大小顯示中心的一部分在imageView
- 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){
- //浮點類型,得到sender的旋轉度數
- var rotation : CGFloat = sender.rotation
- //旋轉角度CGAffineTransformMakeRotation,改變圖像角度
- im.transform = CGAffineTransformMakeRotation(rotation+netRotation)
- //狀態結束,保存數據
- if sender.state == UIGestureRecognizerState.Ended{
- netRotation += rotation
- }
- }
- //拖手勢
- func handlePanGesture(sender: UIPanGestureRecognizer){
- //得到拖的過程中的xy座標
- var translation : CGPoint = sender.translationInView(im)
- //平移圖片CGAffineTransformMakeTranslation
- 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;
- }
- //得到不越界不<0的下標
- imageIndex = imageIndex < 0 ? images.count-1:imageIndex%images.count
- //imageView顯示圖片
- 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)
- }
- }
- }
[swift3.0]手勢
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.