您的位置:首页 > 其它

学习笔记 - 触摸事件&手势识别

2016-08-25 13:31 302 查看
转载自:http://www.cnblogs.com/monicaios/p/3523341.html

一、触摸事件 & 手势识别

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 一定记住需要释放,否则会影响性能!

==================================================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Quartz2D