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 ...
随机推荐
- hdu 5100 n*n棋盘放k*1长方条最多覆盖面积
http://acm.hdu.edu.cn/showproblem.php?pid=5100 给一个n*n的棋盘,问用k*1的长方条最多能覆盖多大的面积(k个单位都必须完全覆盖上去) 首先,若n< ...
- Vxlan——原理
1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有 ...
- python文件选择:tkFileDialog 基础
tkFileDialog有两种形式: 一个是.askopenfilename(option=value, ...) 这个是"打开"对话框 另一个是:asksaveasfilenam ...
- 【基础知识】.Net基础加强08天
一. 文件的读取 1. 有FileStrem,为什么还要StreamWriter和StreamRead StreamWriter和StreamRead是用来读取文本文件的,每次只读取一行文本文件 二. ...
- ajax异步请求Response.Redirect重定向
一个ajax异步请求报错->捕获异常->重定向错误提示页面. 一个简单的流程 结果一直搞不定.重定向无效.各种百度之. 后来突然想起 ajax的请求是不能在后台重定向的. 如果硬要重定向 ...
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- JPA oneToMany 级联更新
oneToMany 使用: 示例:Employee与Phone为例. 1.类定义如下: package com.vrvwh.wh01.domain; import javax.persistence. ...
- Objective-C与C style语言的简单类比
1. 关于Objc中函数调用类比 [_lblHelloWorld setHidden:![_lblHelloWorld isHidden]]; 类比为: _lblHelloWorld.setHidde ...
- 01_JavaScript简介
js用途 前端三层 结构层 HTML 从主义角度描述页面的结构 样式层 CSS 从审美的角度装饰页面 行为层 JS 从交互角度提升体验 HTML 里面的 b(加粗)/i(倾斜)/u(下划线)等标签由于 ...
- Jquery对Cookie的操作
第一步:先引用jQuery的插件jquery-1.9.1.min.js 第二步:引用jquery.cookie.js插件 下对cookie的操作: $.cookie("cookieName& ...