Swift之手势总结
手势个人笔记,代码简单,不过多赘述。
建立手势只需三步
- 建立和设置手势识别器实例,设置target,action,指定一些属性
- 附加识别器到视图
- 实现action方法
1、首先还是创建一个view
@IBOutlet var view1: UIView!
2、实现手势绑定
//-----------------------手势---------------------------
/**点击手势*/
func tapGestureDemo() {
//建立手势识别器
let gesture = UITapGestureRecognizer(target: self, action: "viewTap:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
/**缩放手势*/
func pinchGestureDemo() {
//建立手势识别器
let gesture = UIPinchGestureRecognizer(target: self, action: "viewPinch:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
/**旋转手势*/
func rotationGestureDemo() {
//建立手势识别器
let gesture = UIRotationGestureRecognizer(target: self, action: "viewRotation:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
/**滑动手势*/
func swipeGestureDemo() {
//建立手势识别器
let gesture = UISwipeGestureRecognizer(target: self, action: "viewSwipe:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
/**平移手势*/
func panGestureDemo() {
//建立手势识别器
let gesture = UIPanGestureRecognizer(target: self, action: "viewPan:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
/**长按手势*/
func LongPressGestureDemo() {
//建立手势识别器
let gesture = UILongPressGestureRecognizer(target: self, action: "viewLongPress:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
/**自定义手势*/
func custonGestureDemo() {
//建立手势识别器
let gesture = CustomGestureRecognizer(target: self, action: "viewCustom:")
//附加识别器到视图
self.view1.addGestureRecognizer(gesture)
}
//-----------------------手势action事件---------------------------
/**点击事件*/
@IBAction func viewTap(sender: UITapGestureRecognizer) {
print("clicked...")
}
/**缩放事件*/
func viewPinch(sender: UIPinchGestureRecognizer) {
print("pinch...")
let _width = view1.bounds.width
let _height = view1.bounds.height
view1.bounds.size = CGSize(width: _width * sender.scale, height: _height * sender.scale)
}
/**旋转事件*/
func viewRotation(sender: UIRotationGestureRecognizer) {
view1.transform = CGAffineTransformMakeRotation(sender.rotation)
}
/**滑动事件*/
var offsetX: CGFloat = 0
func viewSwipe(sender: UISwipeGestureRecognizer) {
if sender.direction == UISwipeGestureRecognizerDirection.Right {
//每次向右平移20
offsetX += 20
view1.transform = CGAffineTransformMakeTranslation(offsetX, 0)
}
}
/**平移事件*/
func viewPan(sender: UIPanGestureRecognizer) {
let _transX = sender.translationInView(view1).x
let _transY = sender.translationInView(view1).y
view1.transform = CGAffineTransformMakeTranslation(_transX, _transY)
}
/**长按事件*/
func viewLongPress(sender: UILongPressGestureRecognizer) {
print("long pressed....")
}
func viewCustom(sender: CustomGestureRecognizer) {
print("custom gesture...")
}
3、最后自定义手势,很简单一个例子,可自由扩展
- 新建一个CustomGestureRecognizer自定义手势类,继承自UIGestureRecognizer
- 切记,引入UIGestureRecognizerSubclass
- 开始实现类容,下面代码实现从左上角滑动到右下角实例
import UIKit
import UIKit.UIGestureRecognizerSubclass
class CustomGestureRecognizer: UIGestureRecognizer {
var leftTop = false
var rightDown = false
override init(target: AnyObject?, action: Selector) {
super.init(target: target, action: action)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent) {
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent) {
let myTouch = touches.first! as UITouch
let myLocation = myTouch.locationInView(self.view)
if myLocation.x < 10 && myLocation.y < 10 {
leftTop = true
}
if (myLocation.x + 10) > self.view?.bounds.width && (myLocation.y + 10) > self.view?.bounds.height {
rightDown = true
}
if leftTop && rightDown {
self.state = UIGestureRecognizerState.Ended
}
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent) {
self.reset()
}
}
原文链接:http://www.jianshu.com/p/6ef6603d035d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
Swift之手势总结的更多相关文章
- swift 中手势的使用
swift 中手势的使用 /**点击手势*/ func tapGestureDemo() { //建立手势识别器 let gesture = UITapGestureRecognizer(target ...
- Swift - 各种手势检测大全(UIGestureRecognizer及其子类)
UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1,UISwipeGestureRecognizer:滑动(快速移动) 1 2 3 4 5 6 7 8 ...
- swift - 各种手势用法大全
UIGestureRecognizer有许多子类,用于监听一些常见的手势事件,这些子类主要有: 1.首先创建几个view,来用于手势的检测 let view1 = UIView() let view2 ...
- Swift 项目中常用的第三方框架
Swift 项目中可能用到的第三方框架 字数1004 阅读4091 评论17 喜欢93 这里记录下swift开发中可能用的框架 , 最近浏览了不少,积累在这里,以后用的时候方便查阅.顺便推荐给大家! ...
- Swift 项目中可能用到的第三方框架
这里记录下swift开发中可能用的框架 , 最近浏览了不少,积累在这里,以后用的时候方便查阅.顺便推荐给大家! 这里的框架都是纯swift的 , 感谢开源 ,感谢大神们 . 下拉刷新 BreakOut ...
- ios项目里扒出来的json文件
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...
- Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...
- iOS - 开发类库
开发类库 UI 项目名称 项目信息 1.MJRefresh 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明. ...
- iOS及Mac开源项目和学习资料【超级全面】
UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...
随机推荐
- socket基础
一.socket简介 1. 套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和 ...
- vimium: 浏览器神器
chrome firefox 都有 vimium (firefox 中为vimfx), 快捷键也差不多 下边是chrome中快捷键示意图: G = shift + g (其他同理) c+e = ctr ...
- Spring Mobile 1.1.0.RC1 和 1.0.2 发布
Spring Mobile 1.1.0.RC1 发布了,该版本包含: 支持 Firefox OS 设备的检测 修复了使用 LiteDeviceDelegatingViewResolver 处理重定向和 ...
- 用nifi把hdfs数据导到hive
全景图: 1. ListHDFS & FetchHDFS: ListHDFS: FetchHDFS: 2. EvaluateJsonPath: {"status&qu ...
- 动手写一个Remoting接口测试工具(附源码下载)
基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间.所以,我想写一个能自 ...
- Objective-C入门
厂长最近又有新计划,准备做iOS上的开发,要操作工们(其实就是我自己)学习Objective-C,准备为厂子下一步的发展做出巨大贡献.拿人钱财,替人消灾,又得花时间折腾一门语言.话说自从来到现车间,用 ...
- 找出数组中最长的连续数字序列(JavaScript实现)
原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: functi ...
- Vue学习笔记1
目录 前言 1.vue和avalon一样,都不支持VM初始时不存在的属性 2.input元素中属性与v-model同时存在以属性为优先 3.VM中的函数放到data属性和methods属性中的区别,以 ...
- Java-基础练习3
1.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果.把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果. package com.java; public class zm ...
- 搭建Java环境JDK,和运行环境JRE
1:想要学习Java第一步就是搭建Java环境,就是安装JDK,又因为JDK里面包含JRE,所以在安装JDK的过程中就安装了JRE,所以以下只是给出了JDK的安装包,自行下载安装即可 链接:http: ...