IOS 开发之swift中手势的实例详解

手势操作主要包括如下几类
| 手势 | 属性 | 说明 |
|---|---|---|
| 点击 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 = true
label.textAlignment = .Center;
// 添加手势
let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("tapClick:"))
tapRecognizer.numberOfTapsRequired = 1
tapRecognizer.numberOfTouchesRequired = 1
label.userInteractionEnabled = true
label.addGestureRecognizer(tapRecognizer)
// 手势响应方法
func tapClick(recognizer:UITapGestureRecognizer)
{
let label:UILabel = recognizer.view as! UILabel
label.textColor = UIColor.redColor()
}
// 滑动
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 = true
label.textAlignment = .Center;
// 添加手势
let swipeLeftRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipeLeftClick:"))
swipeLeftRecognizer.direction = .Left
swipeLeftRecognizer.numberOfTouchesRequired = 1
label.userInteractionEnabled = true
label.addGestureRecognizer(swipeLeftRecognizer)
// 手势响应方法
func swipeLeftClick(recognizer:UISwipeGestureRecognizer)
{
let label = recognizer.view
label!.backgroundColor = UIColor.orangeColor()
}
// 拖动
let label = UILabel(frame: CGRectMake(10.0, 10.0, 100.0, 100.0))
self.view.addSubview(label)
label.backgroundColor = UIColor.lightGrayColor()
label.text = "手势操作-拖动手势";
label.adjustsFontSizeToFitWidth = true
label.textAlignment = .Center;
// 添加手势
let panRecognizer = UIPanGestureRecognizer(target: self, action: Selector("panClick:"))
label.userInteractionEnabled = true
label.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, 10.0, 200.0, 200.0))
self.view.addSubview(label)
label.backgroundColor = UIColor.lightGrayColor()
label.text = "手势操作-捏合手势";
label.adjustsFontSizeToFitWidth = true
label.textAlignment = .Center;
// 添加手势
let pinchRecognizer = UIPinchGestureRecognizer(target: self, action: Selector("pinchClick:"))
label.userInteractionEnabled = true
label.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, 10.0, 200.0, 200.0))
self.view.addSubview(label)
label.backgroundColor = UIColor.lightGrayColor()
label.text = "手势操作-旋转手势";
label.adjustsFontSizeToFitWidth = true
label.textAlignment = .Center;
// 添加手势
let rotationRecognizer = UIRotationGestureRecognizer(target: self, action: Selector("ratotionClick:"))
label.userInteractionEnabled = true
label.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, 10.0, (self.view.frame.size.width - 10.0 * 2), 60.0))
self.view.addSubview(label)
label.backgroundColor = UIColor.lightGrayColor()
label.text = "手势操作-长按手势";
label.adjustsFontSizeToFitWidth = true
label.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中手势
# IOS
# 手势的开发
# Swift
# 手势的实例
# IOS开发Swift 与 OC相互调用详解
# iOS Swift利用UICollectionView实现无限轮播功能(原理)详解
# iOS开发中Swift逃逸闭包知识
# iOS Swift控制器转场动画示例代码
# iOS Swift读取本地json文件报错的解决方法
# iOS Swift 值类型与引用类型使用区别基础详解
# 拖动
# 单击
# 过程中
# 如有
# 希望能
# 几种
# 双击
# 可以实现
# 谢谢大家
# 主要包括
# 为上
# 几类
# 疑问请
# 知道了
# cpp
# brush
# true
# label
# Ended
# Began
相关文章:
如何快速查询网址的建站时间与历史轨迹?
宝塔面板创建网站无法访问?如何快速排查修复?
网站网页制作专业公司,怎样制作自己的网页?
如何在Windows虚拟主机上快速搭建网站?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何在服务器上配置二级域名建站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
建站主机无法访问?如何排查域名与服务器问题
深圳网站制作平台,深圳市做网站好的公司有哪些?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
建站之星价格显示格式升级,你的预算足够吗?
如何通过VPS搭建网站快速盈利?
Python路径拼接规范_跨平台处理说明【指导】
建站之星如何实现网站加密操作?
定制建站是什么?如何实现个性化需求?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何高效利用200m空间完成建站?
如何高效搭建专业期货交易平台网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
建站之星安装需要哪些步骤及注意事项?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
网站制作需要会哪些技术,建立一个网站要花费多少?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
建站之星后台密码遗忘如何找回?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
建站之星如何修改网站生成路径?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
建站之星代理商如何保障技术支持与售后服务?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何配置支付宝与微信支付功能?
制作网页的网站有哪些,电脑上怎么做网页?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
建站VPS能否同时实现高效与安全翻墙?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何通过云梦建站系统实现SEO快速优化?
如何用VPS主机快速搭建个人网站?
如何挑选高效建站主机与优质域名?
建站之星2.7模板快速切换与批量管理功能操作指南
建站主机选择指南:服务器配置与SEO优化实战技巧
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
小程序网站制作需要准备什么资料,如何制作小程序?
如何通过西部数码建站助手快速创建专业网站?
建站之星代理平台如何选择最佳方案?
利用JavaScript实现拖拽改变元素大小
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
TestNG的testng.xml配置文件怎么写
建站与域名管理如何高效结合?
制作表格网站有哪些,线上表格怎么弄?
*请认真填写需求信息,我们会在24小时内与您取得联系。