本文将演示监听手势事件,使图片可以自由被拖动。
在项目导航区,打开视图控制器的代码文件【VIEwController.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.first29 //获得触摸对象的坐标30 let touchPoint = touch?.location(in: self.vIEw)31 32 //获得图像视图的显示区域33 let imageVIEwFrame = self.imageVIEw.frame34 //获得图像显示区域的左上角的坐标35 let minX = imageVIEwFrame.origin.x36 let minY = imageVIEwFrame.origin.y37 //获得图像显示区域的右下角的坐标38 let maxX = minX + imageVIEwFrame.size.wIDth39 let maxY = minY + imageVIEwFrame.size.height40 //将触摸位置的坐标,和左上角以及右下角的坐标进行比较,41 //从而判断触摸的位置是否位于图像的区域。42 if (touchPoint?.x)! >= minX && (touchPoint?.y)! <= maxX && (touchPoint?.y)! >= minY && (touchPoint?.y)! <= maxY43 {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 !istouchInImageVIEw56 {57 return;58 }59 //获取第一个触摸对象60 let touch = touches.first61 //获得触摸对象的坐标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.center71 //然后将该坐标和偏移距离相加,作为图像视图新的位置72 centerPoint.x += disX73 centerPoint.y += disY74 //刷新图像视图中心点的坐标75 self.imageVIEw.center = centerPoint76 }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 }总结
以上是内存溢出为你收集整理的[Swift通天遁地]三、手势与图表-(2)监听手势事件自由拖动图像视图全部内容,希望文章能够帮你解决[Swift通天遁地]三、手势与图表-(2)监听手势事件自由拖动图像视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)