iOS基础 - 触摸事件&手势识别
==================================================================
一、触摸事件&手势识别
1> 4个触摸事件,针对视图的
2> 6个手势识别(除了用代码添加,也可以用Storyboard添加)
附加在某一个特定视图上的,其中需要注意轻扫手势通常会附加到根视图上。
* 大部分操作,都会在touchesBegan事件中处理,以防夜长梦多!
* touchesEnd事件通常用于处理touchesMoved事件中的收尾工作!
响应者链条只需要理解“链条”的产生和事件传递的顺序即可。
==================================================================
二、Quartz2D绘图
1> 以图形方式,实时绘图的技术,可以高效的绘制简单图形,增加界面的表现
2> 核心动画 <- CALayer(负责UIView中的内容的) <- Quartz2D
Quartz2D是C语言的框架!
Quartz2D是跨平台(MAC & iOS)的,大多数跨平台的技术都是C语言框架的。
GCD(多线程)
==================================================================
三、CALayer图层
1) 每一个视图都有一个根图层,图层用来负责视图中内容的显示,不负责响应事件
2) 图层可以添加子图层,每一个视图有且仅有一个根图层
3) 所有的非根图层,都具有隐式动画属性,直接修改这些属性,就可以产生动画
4) 核心动画的本质是通过以修改图层键值路径的方式实现动画的!
5) 在动画过程中,图层实际上是将视图中的内容生成一张图像参与动画,视图本身的位置并不会发生变化,其目的就是为了提高性能!
* 图层的工作顺序
1) - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
代理方法中绘制根图层中的所有内容
绘制结束后,调用视图的
2)- (void)drawRect:(CGRect)rect
从代理方法中,将绘制结果(图像)传给drawRect,直接将内容拷贝到屏幕
3) - (void)drawInContext:(CGContextRef)ctx
绘制子图层中的内容
关于CALayer需要掌握的内容:
1. 记住可动画属性
position 位置
backgroundColor 背景颜色
opacity 透明度
transform 形变
cornerRadius 圆角
content 内容(id)图像
==================================================================
四、CAAnimation
基本动画和关键帧动画都是通过修改图层的可动画属性实现的动画方式,以健值路径的方式修改。
要修改属性,可以利用view.layer.xxx智能提示帮助,不用硬记,能眼熟就行。
1) CABasicAnimation
fromValue 从哪里来
toValue 到哪里去
2) CAKeyFrameAnimation
values 一堆数值的数组
path 针对position属性的动画
3) CAAnimationGroup
将基本动画和关键帧动画组合并发使用
需要注意的是:keyPath不要重复,群组中的每个动画只能负责修改一个keyPath
4) *** CATransition(转场) ***
type:转场的类型
subType:方向(上下左右)
所有的动画都不要忘记指定duration。
其他常用属性
* repeatCount 重复次数
* autoReverse 自动翻转
在绝大多数应用程序开发中,基本动画和都可以使用块代码替代。关键帧动画在使用负责效果时点缀的。
对以上动画有印象,知道大概的使用方法,在需要的时候,去哪里查询即可。
* 转场动画使用还是比较频繁!
==================================================================
五、UIDynamic UI动力学
使用步骤:
1> 实例化一个animator
2> 实例化要参与仿真的视图或者控件
3> 实例化仿真行为
重力: Gravity
碰撞: Collision 有代理方法,可以添加边界碰撞
附加: Attachment 有刚性、弹性区别,设置damping即可
可以附加到一个点,也可以附加到一个视图上
吸附: Snap 设置damping
推: Push 单次推和连续推
如果是单次推,需要将active = YES
需要指定
* 力量
* 角度
元素属性,通常只需要改弹力系数即可
4> 将行为添加到animator,仿真立刻开始启动
==================================================================
六、KVC & KVO
KVC - Key Value Coding
KVO - Key Value Observer
KVC是通过键值路径的方式间接访问对象属性的,CAAnimation中可以通过KVC直接动态添加属性。
KVO是可以通过键值路径的方式观察某一个对象属性的变化,并及时通知!
关于KVO一定记住需要释放,否则会影响性能!
==================================================================
iOS基础 - 触摸事件&手势识别的更多相关文章
- iOS基础 - 触摸事件与手势识别
一.iOS的输入事件 UIKit可识别三种类型的输入事件: 触摸事件 运动(加速计)事件 远程控制事件 二.UIEvent iOS中许多事件对象都是UIEvent类的实例,记录事件产生的时刻和类型 U ...
- iOS中—触摸事件详解及使用
iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...
- 阶段性总结⓵触摸事件&手势识别⓶Quartz2D绘图⓷CALayer图层⓸CAAnimation⓹UIDynamic UI动力学⓺KVC&KVO
知识点复习 1. 触摸事件&手势识别 1> 4个触摸事件,针对视图的 2> 6个手势识别(除了用代码添加,也可以用Storyboard添加) 附加在某一个特定视图上的, ...
- iOS:触摸事件和手势识别的介绍
触摸事件和手势识别的介绍 1.iOS的输入事件 UIKit可识别三种类型的输入事件: 触摸事件 运动事件 远程控制事件 iOS中许多事件对象都是UIEvent类的实例,UIEvent记录了事件所产生 ...
- iOS的触摸事件的用法以及和手势识别器的区别
1.首先来介绍下触摸事件和手势识别器的利与弊 触摸事件和手势识别器二者之间有直接的关系 手势识别器是在触摸事件的基础上演变过来的 当我们用到触摸事件时 默认的uiview是没有什么效果的 只能自定义v ...
- iOS的触摸事件
在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件,我们称其为@''响应者对象''UIApplication,UIViewController,UIView都 ...
- IOS 拖拽事件(手势识别)
@interface NJViewController () @property (weak, nonatomic) IBOutlet UIView *customView; @end @implem ...
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...
- 转发:iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 转载来自崔江涛(KenshinCui) 链接:http://www.cnblogs.com/kenshincui/p/3950646.html 概览 iPhone的成功很大一 ...
随机推荐
- 十天学Linux内核之第三天---内存管理方式
原文:十天学Linux内核之第三天---内存管理方式 昨天分析的进程的代码让自己还在头昏目眩,脑子中这几天都是关于Linux内核的,对于自己出现的一些问题我会继续改正,希望和大家好好分享,共同进步.今 ...
- SpringMVC传参
@Controller @RequestMapping("/user") public UserController extends BaseController{ @InitBi ...
- Git联系oschina托管代码版本号
工作一般使用SVN,近期好像GitHub有些火.看到开源中国上也有Git的开源版本号管理. 另外看到一篇文章说Git 比 SVN 要好. 就想多了解一下Git.顺便也能够把自己平时的一些代码保存在云端 ...
- Activity的LaunchMode情景思考
此链接:http://blog.csdn.net/xiaodongrush/article/details/28597855 1. 有哪几种类型?分别有什么用? http://developer.an ...
- 阿里云server安全设定
1.打开所有的服务云盾 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamVkaWFlbF9sdQ==/font/5a6L5L2T/fontsize/400 ...
- 一款非常棒的纯CSS3 3D菜单演示及制作教程
原文:一款非常棒的纯CSS3 3D菜单演示及制作教程 这段时间比较忙,很久没在这里分享一些漂亮的HTML5和CSS3资源了,今天起的早,看到一款很不错的CSS3 3D菜单,觉得非常上眼,就将它分享给大 ...
- Python美女[从新手到高手]--阅读"见个面问题 HashMap 储存方法"联想
今伯乐在线 上看到一篇文章.一道面试题看 HashMap 的存储方式.也就是问: 在 HashMap 中存放的一系列键值对,当中键为某个我们自己定义的类型.放入 HashMap 后,我们在外部把某一个 ...
- 【百度地图API】手机浏览器抓包工具及其使用方法
原文:[百度地图API]手机浏览器抓包工具及其使用方法 摘要:为了测试地图API在手机浏览器上的性能,需要给手机浏览器设置代理.通过代理,我们可以在PC上获取到抓包数据.进而对性能做进一步分析. -- ...
- HDU 4324 Triangle LOVE 拓扑排序
Problem Description Recently, scientists find that there is love between any of two people. For exam ...
- windows下用c实现Socket通信
原文:windows下用c实现Socket通信 原本以为c是跨平台,所以,c在windows下和linux下的程序应该是类似于Java,什么都不用改变的,今儿才恍然大悟,他们的类库不一样啊-- 下面我 ...