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
相关文章:
香港服务器部署网站为何提示未备案?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
简历在线制作网站免费版,如何创建个人简历?
如何在云主机快速搭建网站站点?
建站之星收费标准详解:套餐费用及年费价格表一览
建站DNS解析失败?如何正确配置域名服务器?
如何在新浪SAE免费搭建个人博客?
,柠檬视频怎样兑换vip?
如何在西部数码注册域名并快速搭建网站?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
,有什么在线背英语单词效率比较高的网站?
如何快速完成中国万网建站详细流程?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在橙子建站上传落地页?操作指南详解
Android自定义listview布局实现上拉加载下拉刷新功能
网站好制作吗知乎,网站开发好学吗?有什么技巧?
如何通过宝塔面板实现本地网站访问?
专业公司网站制作公司,用什么语言做企业网站比较好?
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何通过西部建站助手安装IIS服务器?
网站网页制作专业公司,怎样制作自己的网页?
如何快速查询网站的真实建站时间?
Bpmn 2.0的XML文件怎么画流程图
nginx修改上传文件大小限制的方法
建站上市公司网站建设方案与SEO优化服务定制指南
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
在线教育网站制作平台,山西立德教育官网?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何在景安云服务器上绑定域名并配置虚拟主机?
如何在阿里云通过域名搭建网站?
网站制作说明怎么写,简述网页设计的流程并说明原因?
建站之家VIP精选网站模板与SEO优化教程整合指南
建站10G流量真的够用吗?如何应对访问高峰?
建站主机核心功能解析:服务器选择与网站搭建流程指南
表情包在线制作网站免费,表情包怎么弄?
常州企业网站制作公司,全国继续教育网怎么登录?
如何选购建站域名与空间?自助平台全解析
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
如何做网站制作流程,*游戏网站怎么搭建?
建站之星如何快速生成多端适配网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
实例解析angularjs的filter过滤器
如何在IIS服务器上快速部署高效网站?
建站之星后台密码如何安全设置与找回?
如何通过多用户协作模板快速搭建高效企业网站?
高端建站三要素:定制模板、企业官网与响应式设计优化
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何快速搭建高效WAP手机网站?
,交易猫的商品怎么发布到网站上去?
*请认真填写需求信息,我们会在24小时内与您取得联系。