Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)
//
//ViewController.swift
//JieUITapGestureRecognizer
//
//Createdbyjiezhangon14-10-4.
//Copyright(c)2014年jiezhang.Allrightsreserved.
//
importUIKit
classViewController:UIViewController,UIActionSheetDelegate{
@IBOutletvarim:UIImageView!
varlastScaleFactor:CGFloat!=1//放大、縮小
varnetRotation:CGFloat=1;//旋轉(zhuǎn)
varnetTranslation:CGPoint!//平移
varimages:NSArray=["meinv1.jpg","mv2.jpg","mv3.jpg","mv4.jpg","mv5.jpg","mv6.jpg"]//圖片數(shù)組
varimageIndex:Int=0//數(shù)組下標
requiredinit(coderaDecoder:NSCoder){
super.init(coder:aDecoder)
netTranslation=CGPoint(x:0,y:0)
}
overridefuncviewDidLoad(){
super.viewDidLoad()
vartapGesture=UITapGestureRecognizer(target:self,action:"handleTapGesture:")
//設(shè)置手勢點擊數(shù),雙擊:點2下
tapGesture.numberOfTapsRequired=2
self.view.addGestureRecognizer(tapGesture)
//手勢為捏的姿勢:按住option按鈕配合鼠標來做這個動作在虛擬器上
varpinchGesture=UIPinchGestureRecognizer(target:self,action:"handlePinchGesture:")
self.view.addGestureRecognizer(pinchGesture)
//旋轉(zhuǎn)手勢:按住option按鈕配合鼠標來做這個動作在虛擬器上
varrotateGesture=UIRotationGestureRecognizer(target:self,action:"handleRotateGesture:")
self.view.addGestureRecognizer(rotateGesture)
//拖手勢
varpanGesture=UIPanGestureRecognizer(target:self,action:"handlePanGesture:")
//self.view.addGestureRecognizer(panGesture)
//劃動手勢
//右劃
varswipeGesture=UISwipeGestureRecognizer(target:self,action:"handleSwipeGesture:")
self.view.addGestureRecognizer(swipeGesture)
//左劃
varswipeLeftGesture=UISwipeGestureRecognizer(target:self,action:"handleSwipeGesture:")
swipeLeftGesture.direction=UISwipeGestureRecognizerDirection.Left//不設(shè)置是右
self.view.addGestureRecognizer(swipeLeftGesture)
//長按手勢
varlongpressGesutre=UILongPressGestureRecognizer(target:self,action:"handleLongpressGesture:")
//長按時間為1秒
longpressGesutre.minimumPressDuration=1
//允許15秒運動
longpressGesutre.allowableMovement=15
//所需觸摸1次
longpressGesutre.numberOfTouchesRequired=1
self.view.addGestureRecognizer(longpressGesutre)
}
overridefuncdidReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
//Disposeofanyresourcesthatcanberecreated.
}
//雙擊屏幕時會調(diào)用此方法,放大和縮小圖片
funchandleTapGesture(sender:UITapGestureRecognizer){
//判斷imageView的內(nèi)容模式是否是UIViewContentModeScaleAspectFit,該模式是原比例,按照圖片原時比例顯示大小
ifim.contentMode==UIViewContentMode.ScaleAspectFit{
//把imageView模式改成UIViewContentModeCenter,按照圖片原先的大小顯示中心的一部分在imageView
im.contentMode=UIViewContentMode.Center
}else{
im.contentMode=UIViewContentMode.ScaleAspectFit
}
}
//捏的手勢,使圖片放大和縮小,捏的動作是一個連續(xù)的動作
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)
}
//狀態(tài)是否結(jié)束,如果結(jié)束保存數(shù)據(jù)
ifsender.state==UIGestureRecognizerState.Ended{
iffactor>1{
lastScaleFactor=lastScaleFactor+factor-1
}else{
lastScaleFactor=lastScaleFactor*factor
}
}
}
//旋轉(zhuǎn)手勢
funchandleRotateGesture(sender:UIRotationGestureRecognizer){
//浮點類型,得到sender的旋轉(zhuǎn)度數(shù)
varrotation:CGFloat=sender.rotation
//旋轉(zhuǎn)角度CGAffineTransformMakeRotation,改變圖像角度
im.transform=CGAffineTransformMakeRotation(rotation+netRotation)
//狀態(tài)結(jié)束,保存數(shù)據(jù)
ifsender.state==UIGestureRecognizerState.Ended{
netRotation+=rotation
}
}
//拖手勢
funchandlePanGesture(sender:UIPanGestureRecognizer){
//得到拖的過程中的xy坐標
vartranslation:CGPoint=sender.translationInView(im)
//平移圖片CGAffineTransformMakeTranslation
im.transform=CGAffineTransformMakeTranslation(netTranslation.x+translation.x,netTranslation.y+translation.y)
ifsender.state==UIGestureRecognizerState.Ended{
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--;//下標--
break
caseUISwipeGestureRecognizerDirection.Up:
println("Up")
break
caseUISwipeGestureRecognizerDirection.Down:
println("Down")
break
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{
//創(chuàng)建警告
varactionSheet=UIActionSheet(title:"Imageoptions",delegate:self,cancelButtonTitle:"cancel",destructiveButtonTitle:"ok",otherButtonTitles:"other")
actionSheet.showInView(self.view)
}
}
}
注意:滑動手勢和拖手勢沖突,兩個選一個測試,至于測試的效果自己新建一個工程來把代碼加入就行
總結(jié)
以上是生活随笔為你收集整理的Swift基础--手势识别(双击、捏、旋转、拖动、划动、长按)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate版本_Myeclips
- 下一篇: sqlserver 集群_云数据库最优成