★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-tuljzxwk-kq.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftgit
本文將演示監聽手勢事件,使圖片能夠自由被拖動。github
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】swift
如今開始編寫代碼,實現監聽手勢事件自由拖動的圖像視圖。微信
1 import UIKit 2 3 class ViewController: UIViewController 4 { 5 //給類添加一個屬性,做爲被拖動的圖像視圖。 6 var imageView : UIImageView! 7 //添加一個屬性,用於判斷圖片是否被按下。 8 var isTouchInImageView : Bool = false 9 10 override func viewDidLoad() 11 { 12 super.viewDidLoad() 13 // Do any additional setup after loading the view, typically from a nib. 14 15 //從項目中加載圖片資源 16 let image = UIImage(named: "Star") 17 //使用圖像視圖顯示加載的圖片 18 self.imageView = UIImageView(image: image) 19 //將圖像視圖添加到根視圖中 20 self.view.addSubview(self.imageView) 21 } 22 23 //添加一個方法,用來監聽手指按下時的事件 24 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 25 { 26 //可能時多個手指同事按下, 27 //這裏獲取第一個觸摸對象。 28 let touch = touches.first 29 //得到觸摸對象的座標 30 let touchPoint = touch?.location(in: self.view) 31 32 //得到圖像視圖的顯示區域 33 let imageViewFrame = self.imageView.frame 34 //得到圖像顯示區域的左上角的座標 35 let minX = imageViewFrame.origin.x 36 let minY = imageViewFrame.origin.y 37 //得到圖像顯示區域的右下角的座標 38 let maxX = minX + imageViewFrame.size.width 39 let maxY = minY + imageViewFrame.size.height 40 //將觸摸位置的座標,和左上角以及右下角的座標進行比較, 41 //從而判斷觸摸的位置是否位於圖像的區域。 42 if (touchPoint?.x)! >= minX && (touchPoint?.y)! <= maxX && (touchPoint?.y)! >= minY && (touchPoint?.y)! <= maxY 43 { 44 //當觸摸在圖像區域時,設置布爾屬性的值爲真, 45 isTouchInImageView = true; 46 //而後在控制檯輸出日誌信息。 47 print("You got a star."); 48 } 49 } 50 51 //添加一個方法,用來監聽手指移動時的事件 52 override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) 53 { 54 //判斷當觸摸位置不在圖像區域時,再也不執行後方的代碼。 55 if !isTouchInImageView 56 { 57 return; 58 } 59 //獲取第一個觸摸對象 60 let touch = touches.first 61 //得到觸摸對象的座標 62 let touchPoint = touch?.location(in: self.view) 63 //得到觸摸對象在上一個位置時的座標 64 let touchPrePoint = touch?.previousLocation(in: self.view) 65 //計算兩個座標之間的偏移距離 66 let disX = (touchPoint?.x)! - (touchPrePoint?.x)! 67 let disY = (touchPoint?.y)! - (touchPrePoint?.y)! 68 69 //得到圖像視圖中心點的座標 70 var centerPoint = self.imageView.center 71 //而後將該座標和偏移距離相加,做爲圖像視圖新的位置 72 centerPoint.x += disX 73 centerPoint.y += disY 74 //刷新圖像視圖中心點的座標 75 self.imageView.center = centerPoint 76 } 77 78 //添加一個方法,用來監聽手指移動結束時的事件。 79 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 80 { 81 //當手指移開屏幕時,設置布爾屬性的值爲假。 82 isTouchInImageView = false; 83 } 84 85 override func didReceiveMemoryWarning() { 86 super.didReceiveMemoryWarning() 87 // Dispose of any resources that can be recreated. 88 } 89 }