全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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小时内与您取得联系。