[Swift通天遁地]三、手势与图表-(2)监听手势事件自由拖动图像视图

[Swift通天遁地]三、手势与图表-(2)监听手势事件自由拖动图像视图,第1张

概述本文将演示监听手势事件,使图片可以自由被拖动。 在项目导航区,打开视图控制器的代码文件【ViewController.swift】 现在开始编写代码,实现监听手势事件自由拖动的图像视图。 1 import UIKit 2 3 class ViewController: UIViewController 4 { 5 //给类添加一个属性,作为被拖动的图像视图。 6

本文将演示监听手势事件,使图片可以自由被拖动。

在项目导航区,打开视图控制器的代码文件【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)监听手势事件自由拖动图像视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1021195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存