阶段性总结⓵触摸事件&手势识别⓶Quartz2D绘图⓷CALayer图层⓸CAAnimation⓹UIDynamic UI动力学⓺KVC&KVO

知识点复习html

 
1. 触摸事件&手势识别
 
1> 4个触摸事件,针对视图的
2> 6个手势识别(除了用代码添加,也能够用Storyboard添加)
 
附加在某一个特定视图上的,其中须要注意轻扫手势一般会附加到根视图上。
 
* 大部分操做,都会在touchesBegan事件中处理,以防夜长梦多!
* touchesEnd事件一般用于处理touchesMoved事件中的收尾工做!
 
以上两项内容都必需要掌握
 
3> 响应者链条,目的是为了让你们可以理解手势触摸事件的传递过程,一旦遇到须要拦截事件时,知道从何处下手。
 
响应者链条只须要理解“链条”的产生和事件传递的顺序便可。
 
==================================================================
2. Quartz2D绘图
 
学习的线路图,为何要学习Quartz2D
 
1> 以图形方式,实时绘图的技术,能够高效的绘制简单图形,增长界面的表现
 
2> 核心动画 <- CALayer(负责UIView中的内容的) <- Quartz2D
 
Quartz2D是C语言的框架!根OC语法不一样
 
Quartz2D是跨平台(MAC & iOS)的,大多数跨平台的技术都是C语言框架的。
GCD(多线程)
 
须要掌握的内容:
1> 理解上下文的概念
2> 理解而且建立简单的绘图路径
3> 可以完成直线、矩形、圆形、圆弧、图像、文本的绘制,能够辅助快速的提高UI界面的表现
4> 可以用图像上下文绘制图像
5> 绘制径向渐变、PDF(理解就行)
6> 全部的绘图工做必须在drawRect:方法中进行,若是须要更新显示,使用setNeedDisplay方法。
 
==================================================================
3. 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)图像
 
 
==================================================================
术博客 http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong

4. CAAnimation
 
基本动画和关键帧动画都是经过修改图层的可动画属性实现的动画方式,以健值路径的方式修改。
 
要修改属性,能够利用view.layer.xxx智能提示帮助,不用硬记,能眼熟就行。
 
1) CABasicAnimation
     fromValue     从哪里来
     toValue          到哪里去
2) CAKeyFrameAnimation
     values          一堆数值的数组
     path          针对position属性的动画
 
3)   CAAnimationGroup
 
     将基本动画和关键帧动画组合并发使用
 
     须要注意的是:keyPath不要重复,群组中的每一个动画只能负责修改一个keyPath
 
4) *** CATransition(转场) ***
 
     type:转场的类型
     subType:方向(上下左右)
 
全部的动画都不要忘记指定duration。
 
其余经常使用属性
* repeatCount          重复次数
* autoReverse          自动翻转
 
在绝大多数应用程序开发中,基本动画和均可以使用块代码替代。关键帧动画在使用负责效果时点缀的。
 
对以上动画有印象,知道大概的使用方法,在须要的时候,去哪里查询便可。
 
* 转场动画使用仍是比较频繁!
    
 
==================================================================
5. UIDynamic UI动力学
 
使用步骤:
1> 实例化一个animator
2> 实例化要参与仿真的视图或者控件
3> 实例化仿真行为
     重力: Gravity
     碰撞: Collision          有代理方法,能够添加边界碰撞
     附加: Attachment     有刚性、弹性区别,设置damping便可
          能够附加到一个点,也能够附加到一个视图上
     吸附: Snap          设置damping
     推:     Push               单次推和连续推
          若是是单次推,须要将active = YES
          须要指定
          * 力量
          * 角度
     元素属性,一般只须要改弹力系数便可
 
4> 将行为添加到animator,仿真马上开始启动
 //本文永久连接,转载请注明出处: http://www.cnblogs.com/ChenYilong/p/3489941.html
==================================================================
术博客 http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong

6. KVC & KVO
 
KVC - Key Value Coding
KVO - Key Value Observer
 
KVC是经过键值路径的方式间接访问对象属性的,CAAnimation中能够经过KVC直接动态添加属性。
KVO是能够经过键值路径的方式观察某一个对象属性的变化,并及时通知!
 
关于KVO必定记住须要释放,不然会影响性能!
 
==================================================================
今天综合演练项目程序结构须要理解和掌握

Technorati Tags: CAAnimation, CALayer图层, Quartz2D绘图, UIDynamic UI动力学, 触摸事件&手势识别, KVC&KVO数组

相关文章
相关标签/搜索