Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)

Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按),第1张

概述[objc]  view plain  copy  print ? //   //  ViewController.swift   //  JieUITapGestureRecognizer   //   //  Created by jiezhang on 14-10-4.   //  Copyright (c) 2014年 jiezhang. All rights reserved.   //
[objc] view plain copy print ? // //VIEwController.swift //JIEUITapGestureRecognizer // //CreatedbyjIEzhangon14-10-4. //copyright(c)2014年jIEzhang.Allrightsreserved. importUIKit classVIEwController:UIVIEwController,UIActionSheetDelegate{ @IBOutletvarim:UIImageVIEw! varlastScaleFactor:CGfloat!=1//放大、缩小 varnetRotation:CGfloat=1;//旋转 varnetTranslation:CGPoint!//平移 varimages:NSArray=["meinv1.jpg","mv2.jpg","mv3.jpg","mv4.jpg","mv5.jpg","mv6.jpg"]//图片数组 varimageIndex:Int=0//数组下标 requiredinit(coderaDecoder:NSCoder){ super.init(coder:aDecoder) netTranslation=CGPoint(x:0,y:0) } overrIDefuncvIEwDIDLoad(){ super.vIEwDIDLoad() vartapGesture=UITapGestureRecognizer(target:self,0); background-color:inherit">action:"handleTapGesture:") //设置手势点击数,双击:点2下 tapGesture.numberOfTapsrequired=2 self.vIEw.addGestureRecognizer(tapGesture) //手势为捏的姿势:按住option按钮配合鼠标来做这个动作在虚拟器上 varpinchGesture=UIPinchGestureRecognizer(target:self,0); background-color:inherit">action:"handlePinchGesture:") self.vIEw.addGestureRecognizer(pinchGesture) //旋转手势:按住option按钮配合鼠标来做这个动作在虚拟器上 varrotateGesture=UIRotationGestureRecognizer(target:self,0); background-color:inherit">action:"handleRotateGesture:") self.vIEw.addGestureRecognizer(rotateGesture) //拖手势 varpanGesture=UIPanGestureRecognizer(target:self,0); background-color:inherit">action:"handlePanGesture:") //self.vIEw.addGestureRecognizer(panGesture) //划动手势 //右划 varswipeGesture=UISwipeGestureRecognizer(target:self,0); background-color:inherit">action:"handleSwipeGesture:") self.vIEw.addGestureRecognizer(swipeGesture) //左划 varswipeleftGesture=UISwipeGestureRecognizer(target:self,0); background-color:inherit">action:"handleSwipeGesture:") swipeleftGesture.direction=UISwipeGestureRecognizerDirection.left//不设置是右 self.vIEw.addGestureRecognizer(swipeleftGesture) //长按手势 varlongpressGesutre=UILongPressGestureRecognizer(target:self,0); background-color:inherit">action:"handleLongpressGesture:") //长按时间为1秒 longpressGesutre.minimumPressDuration=1 //允许15秒运动 longpressGesutre.allowableMovement=15 //所需触摸1次 longpressGesutre.numberOftouchesrequired=1 self.vIEw.addGestureRecognizer(longpressGesutre) } overrIDefuncdIDReceiveMemoryWarning(){ super.dIDReceiveMemoryWarning() //dispoSEOfanyresourcesthatcanberecreated. //双击屏幕时会调用此方法,放大和缩小图片 funchandleTapGesture(sender:UITapGestureRecognizer){ //判断imageVIEw的内容模式是否是UIVIEwContentModeScaleAspectFit,该模式是原比例,按照图片原时比例显示大小 ifim.contentMode==UIVIEwContentMode.ScaleAspectFit{ //把imageVIEw模式改成UIVIEwContentModeCenter,按照图片原先的大小显示中心的一部分在imageVIEw im.contentMode=UIVIEwContentMode.Center }else{ im.contentMode=UIVIEwContentMode.ScaleAspectFit //捏的手势,使图片放大和缩小,捏的动作是一个连续的动作 funchandlePinchGesture(sender:UIPinchGestureRecognizer){ varfactor=sender.scale iffactor>1{ //图片放大 im.transform=CGAffinetransformMakeScale(lastScaleFactor+factor-1,lastScaleFactor+factor-1) }else{ //缩小 im.transform=CGAffinetransformMakeScale(lastScaleFactor*factor,lastScaleFactor*factor) //状态是否结束,如果结束保存数据 ifsender.state==UIGestureRecognizerState.Ended{ iffactor>1{ lastScaleFactor=lastScaleFactor+factor-1 lastScaleFactor=lastScaleFactor*factor //旋转手势 funchandleRotateGesture(sender:UIRotationGestureRecognizer){ //浮点类型,得到sender的旋转度数 varrotation:CGfloat=sender.rotation //旋转角度CGAffinetransformMakeRotation,改变图像角度 im.transform=CGAffinetransformMakeRotation(rotation+netRotation) //状态结束,保存数据 netRotation+=rotation //拖手势 funchandlePanGesture(sender:UIPanGestureRecognizer){ //得到拖的过程中的xy坐标 vartranslation:CGPoint=sender.translationInVIEw(im) //平移图片CGAffinetransformMakeTranslation im.transform=CGAffinetransformMakeTranslation(netTranslation.x+translation.x,netTranslation.y+translation.y) netTranslation.x+=translation.x netTranslation.y+=translation.y funchandleSwipeGesture(sender:UISwipeGestureRecognizer){ //划动的方向 vardirection=sender.direction //判断是上下左右 switch(direction){ caseUISwipeGestureRecognizerDirection.left: println("left") imageIndex++;//下标++ break caseUISwipeGestureRecognizerDirection.Right: println("Right") imageIndex--;//下标-- caseUISwipeGestureRecognizerDirection.Up: println("Up") break caseUISwipeGestureRecognizerDirection.Down: println("Down") default: break; //得到不越界不<0的下标 imageIndex=imageIndex<0?images.count-1:imageIndex%images.count //imageVIEw显示图片 im.image=UIImage(named:images[imageIndex]asstring) funchandleLongpressGesture(sender:UILongPressGestureRecognizer){ ifsender.state==UIGestureRecognizerState.Began{ //创建警告 varactionSheet=UIActionSheet(Title:"Imageoptions",0); background-color:inherit">delegate:self,0); background-color:inherit">cancelbuttonTitle:"cancel",0); background-color:inherit">destructivebuttonTitle:"ok",0); background-color:inherit">otherbuttonTitles:"other") actionSheet.showInVIEw(self.vIEw) }


注意:滑动手势和拖手势冲突,两个选一个测试,至于测试的效果自己新建一个工程来把代码加入就行

总结

以上是内存溢出为你收集整理的Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)全部内容,希望文章能够帮你解决Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1080550.html

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

发表评论

登录后才能评论

评论列表(0条)

保存