
手势 *** 作主要包括如下几类
| 手势 | 属性 | 说明 |
|---|---|---|
| 点击 UITapGestureRecognizer | numberOfTapsrequired:点击的次数;numberOftouchesrequired:点击时有手指数量 | 设置属性 numberOfTapsrequired 可以实现单击,或双击的效果 |
| 滑动 UISwipeGestureRecognizer | direction:滑动方向 | direction 滑动方向分为上Up、下Down、左left、右Right |
| 拖动 UIPanGestureRecognizer | 在拖动过程中,通过方法 translationInVIEw 获取拖动时的位移 | |
| 长按 UILongPressGestureRecognizer | minimumPressDuration:长按最少时间 | |
| 旋转 UIRotationGestureRecognizer | ||
| 缩放 UIPinchGestureRecognizer |
注意:手势效果在实施过程中,存在几种状态:
* Began
* Ended
* Cancelled
* Failed
* Possible
代码示例
// 点击let label = UILabel(frame: CGRectMake(10.0,10.0,(self.vIEw.frame.size.wIDth - 10.0 * 2),60.0))self.vIEw.addSubvIEw(label)label.backgroundcolor = UIcolor.lightGraycolor()label.text = "手势 *** 作-单指单击手势";label.adjustsFontSizetoFitWIDth = truelabel.textAlignment = .Center;// 添加手势let tapRecognizer = UITapGestureRecognizer(target: self,action: Selector("tapClick:"))tapRecognizer.numberOfTapsrequired = 1tapRecognizer.numberOftouchesrequired = 1label.userInteractionEnabled = truelabel.addGestureRecognizer(tapRecognizer)// 手势响应方法func tapClick(recognizer:UITapGestureRecognizer){ let label:UILabel = recognizer.vIEw as! UILabel label.textcolor = UIcolor.redcolor()}
// 滑动let label = UILabel(frame: CGRectMake(10.0,60.0))self.vIEw.addSubvIEw(label)label.backgroundcolor = UIcolor.lightGraycolor()label.text = "手势 *** 作-左滑手势";label.adjustsFontSizetoFitWIDth = truelabel.textAlignment = .Center;// 添加手势let swipeleftRecognizer = UISwipeGestureRecognizer(target: self,action: Selector("swipeleftClick:"))swipeleftRecognizer.direction = .leftswipeleftRecognizer.numberOftouchesrequired = 1label.userInteractionEnabled = truelabel.addGestureRecognizer(swipeleftRecognizer)// 手势响应方法func swipeleftClick(recognizer:UISwipeGestureRecognizer){ let label = recognizer.vIEw label!.backgroundcolor = UIcolor.orangecolor()}
// 拖动let label = UILabel(frame: CGRectMake(10.0,100.0,100.0))self.vIEw.addSubvIEw(label)label.backgroundcolor = UIcolor.lightGraycolor()label.text = "手势 *** 作-拖动手势";label.adjustsFontSizetoFitWIDth = truelabel.textAlignment = .Center;// 添加手势let panRecognizer = UIPanGestureRecognizer(target: self,action: Selector("panClick:"))label.userInteractionEnabled = truelabel.addGestureRecognizer(panRecognizer)var pointValue:CGPoint! = CGPointZero // 移动// 手势响应方法func panClick(recognizer:UIPanGestureRecognizer){ let label:UILabel = recognizer.vIEw as! UILabel let point = recognizer.translationInVIEw(label) print("pan point = \(point)") // 移动 label.transform = CGAffinetransformMakeTranslation(point.x + self.pointValue.x,point.y + self.pointValue.y) if recognizer.state == .Began { label.backgroundcolor = UIcolor.yellowcolor() self.vIEw.bringSubvIEwToFront(label) } else if recognizer.state == .Ended { label.backgroundcolor = UIcolor.lightGraycolor() self.pointValue.x += point.x self.pointValue.y += point.y }}
// 缩放let label = UILabel(frame: CGRectMake(10.0,200.0,200.0))self.vIEw.addSubvIEw(label)label.backgroundcolor = UIcolor.lightGraycolor()label.text = "手势 *** 作-捏合手势";label.adjustsFontSizetoFitWIDth = truelabel.textAlignment = .Center;// 添加手势let pinchRecognizer = UIPinchGestureRecognizer(target: self,action: Selector("pinchClick:"))label.userInteractionEnabled = truelabel.addGestureRecognizer(pinchRecognizer)// 手势响应方法var scaleValue:CGfloat! = 1.0 // 缩放func pinchClick(recognizer:UIPinchGestureRecognizer){ let label:UILabel = recognizer.vIEw as! UILabel let scale = recognizer.scale; if scale > 1.0 { // 放大 label.transform = CGAffinetransformMakeScale(self.scaleValue + scale - 1.0,self.scaleValue + scale - 1.0) } else { // 缩小 label.transform = CGAffinetransformMakeScale(self.scaleValue * scale,self.scaleValue * scale) } if recognizer.state == .Began { label.backgroundcolor = UIcolor.greencolor() self.vIEw.bringSubvIEwToFront(label) } else if recognizer.state == .Ended { label.backgroundcolor = UIcolor.lightGraycolor() if scale > 1.0 { self.scaleValue = self.scaleValue + scale - 1.0; } else { self.scaleValue = self.scaleValue * scale } }}
// 旋转let label = UILabel(frame: CGRectMake(10.0,200.0))self.vIEw.addSubvIEw(label)label.backgroundcolor = UIcolor.lightGraycolor()label.text = "手势 *** 作-旋转手势";label.adjustsFontSizetoFitWIDth = truelabel.textAlignment = .Center;// 添加手势let rotationRecognizer = UIRotationGestureRecognizer(target: self,action: Selector("ratotionClick:"))label.userInteractionEnabled = truelabel.addGestureRecognizer(rotationRecognizer)var rotationValue:CGfloat! = 1.0 // 旋转// 手势响应方法func ratotionClick(recognizer:UIRotationGestureRecognizer){ let label:UILabel = recognizer.vIEw as! UILabel let rotation = recognizer.rotation label.transform = CGAffinetransformMakeRotation(rotation + self.rotationValue) if recognizer.state == .Began { label.backgroundcolor = UIcolor.greencolor() self.vIEw.bringSubvIEwToFront(label) } else if recognizer.state == .Ended { label.backgroundcolor = UIcolor.lightGraycolor() self.rotationValue = self.rotationValue + rotation }}
// 长按let label = UILabel(frame: CGRectMake(10.0,60.0))self.vIEw.addSubvIEw(label)label.backgroundcolor = UIcolor.lightGraycolor()label.text = "手势 *** 作-长按手势";label.adjustsFontSizetoFitWIDth = truelabel.textAlignment = .Center;// 添加手势let pressRecognizer = UILongPressGestureRecognizer(target: self,action: Selector("pressClick:")) pressRecognizer.minimumPressDuration = 3.0 label.userInteractionEnabled = true label.addGestureRecognizer(pressRecognizer)// 手势响应方法func pressClick(recognizer:UILongPressGestureRecognizer){ let label:UILabel = recognizer.vIEw as! UILabel if recognizer.state == .Began { let alertVIEw = UIAlertVIEw(Title: nil,message: "长按响应",delegate: nil,cancelbuttonTitle: "知道了") alertVIEw.show() label.backgroundcolor = UIcolor.orangecolor() self.vIEw.bringSubvIEwToFront(label) } else if recognizer.state == .Ended { label.backgroundcolor = UIcolor.lightGraycolor() }}总结
以上是内存溢出为你收集整理的swift中的手势全部内容,希望文章能够帮你解决swift中的手势所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)