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 ...
随机推荐
- requireJS 用法
requireJS使用教程 2.0 常用方法 requirejs.config : 为模块指定别名 requirejs : 将写好的模块进行引入,根据模块编写主代码 define : 编写模块 htm ...
- [转]Python程序员必须知道的30条编程技巧
30 tips & tricks for Python Programming 1 直接交换两个数字位置 x, y = 10, 20 print(x, y) x, y = y, x prin ...
- Windbg符号与源码 《第二篇》
符号文件是一种辅助数据,它包含了对应用程序代码的一些标注信息,这些信息在调试过程中非常有用.如果没有辅助数据,那么能获得的信息就只有应用程序的二进制文件.二进制文件很难调试,因为无法看到代码中的函数名 ...
- 备份数据库的时候设置 BufferCount 选项不正确导致 out of memory 的情况
备份数据库的时候设置 BufferCount 选项不正确导致 out of memory 的情况 今天群里面的东辉兄跟我说备份生产数据库的时候报错 环境: 32位的SQLSERVER2008 机器有1 ...
- Arcgis for Javascript 在VS2012中的智能提示
官方地址: https://developers.arcgis.com/en/javascript/jsapi/api_codeassist.html 安装步骤 Visual Studio 2010 ...
- TPL实现Task.WhileAll扩展方法
文章翻译整理自 Nikola Malovic 两篇博文: Task.WhileAll Awaitable task progress reporting 当 Task.WhenAll 遇见 Task. ...
- Android-Universal-Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration详解
一.介绍 Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示.所以,如果你的程序里需要这个功能的话, ...
- mvc项目问题清单以及解决方法
项目开发中遇到的一些问题以及解决方法. 1. 脚本相关 mvc中RemoteAttribute使用,在IE浏览器下面会将结果缓存起来(304).因为IE浏览器判断Url的链接参数都没有变化,所以直接返 ...
- atitit.ajax 最佳实践跟框架选型 o99
atitit.ajax 最佳实践跟框架选型 1. 选型框架dwr/dwr3 跟jq 1 2. DWR方便的地方分为两个地方. 1 3. dwr 优点: 1 4. 缺点: 2 5. 根jq的区别 2 1 ...
- atitit.插件体系设计总结o73.doc
1. 两大类型:微内核(级联树形结构)与巨内核(管理容器,并联结构). 1 2. 通用插件接口 1 3. 插件的绑定and 初始化 2 4. 微内核插件平台设计 2 5. 参考 2 1. 两大类型:微 ...