知识点复习

 
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)图像
 
 
==================================================================
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
==================================================================
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

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

  1. iOS基础 - 触摸事件&手势识别

    ================================================================== 一.触摸事件&手势识别 1> 4个触摸事件,针对视图 ...

  2. iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

    -- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...

  3. IOS触摸事件和手势识别

    IOS触摸事件和手势识别 目录 概述 触摸事件 手势识别 概述 为了实现一些新的需求,我们常常需要给IOS添加触摸事件和手势识别 触摸事件 触摸事件的四种方法 -(void)touchesBegan: ...

  4. 转发:iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

    -- iOS事件全面解析 转载来自崔江涛(KenshinCui) 链接:http://www.cnblogs.com/kenshincui/p/3950646.html 概览 iPhone的成功很大一 ...

  5. ios开发——实用技术OC-Swift篇&触摸与手势识别

    iOS开发学习之触摸事件和手势识别   iOS的输入事件 触摸事件 手势识别 手机摇晃 一.iOS的输入事件   触摸事件(滑动.点击) 运动事件(摇一摇.手机倾斜.行走),不需要人为参与的 远程控制 ...

  6. iOS开发——UI进阶篇(十二)事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别

    触摸事件 在用户使用app过程中,会产生各种各样的事件 一.iOS中的事件可以分为3大类型 触摸事件加速计事件远程控制事件 响应者对象在iOS中不是任何对象都能处理事件,只有继承了UIResponde ...

  7. iOS基础 - 触摸事件与手势识别

    一.iOS的输入事件 UIKit可识别三种类型的输入事件: 触摸事件 运动(加速计)事件 远程控制事件 二.UIEvent iOS中许多事件对象都是UIEvent类的实例,记录事件产生的时刻和类型 U ...

  8. 触摸事件,手势识别(UITouch,UIGestureRecognizer)

    触摸发生时,UIWindow会有一个队列来存放所有的触摸事件,然后再把这些事件发送给对应的hit-test view,hit-test view会通过touch的四个函数来接收这些事件. 四个函数分别 ...

  9. iOS:触摸事件和手势识别的介绍

    触摸事件和手势识别的介绍 1.iOS的输入事件  UIKit可识别三种类型的输入事件: 触摸事件 运动事件 远程控制事件 iOS中许多事件对象都是UIEvent类的实例,UIEvent记录了事件所产生 ...

随机推荐

  1. 【Spring实战】----开篇(包含系列目录链接)

    [Spring实战]----开篇(包含系列目录链接) 置顶2016年11月10日 11:12:56 阅读数:3617 终于还是要对Spring进行解剖,接下来Spring实战篇系列会以应用了Sprin ...

  2. mysql 大数据分页查询优化

    应用场景: 当有一张表的数据非常大,需要使用到分页查询,分页查询在100w条后查询效率非常低: 解决方案: 1.业务层解决:只允许用户翻页一百页以内,十条一页: 2.使用where id > 5 ...

  3. 有没有不适合使用flex/lex作为词法分析器的语言?(摘自知乎)

    本问题及解答摘自本人知乎 http://www.zhihu.com/people/chaos-xie   http://www.zhihu.com/question/29922657 感谢知乎网友的回 ...

  4. hadoop中的方法的作用

    /*  * InputFormat类:  *   * 作用:  * 1.设置输入的形式;  * 2.将输入的数据按照相应的形式分割成一个个spilts后再进一步拆分成<key,value> ...

  5. Qt 隐藏标题栏可移动升级版

    在最出的时候,在Qt程序隐藏标题栏的情况下,实现界面可拖拽移动,是鼠标在在程序界面的任意位置都可以,现在这个版本是需要鼠标在程序界面的特定位置开可以 上代码 static QPoint last(0, ...

  6. python终极篇 --- django 初识

    1. 下载: 命令行: pip install django==1.11.15 pip install -i 源 django==1.11.15 pycharm settings 解释器 点+号 输入 ...

  7. MySQL性能分析和优化-part 1

    MySQL性能优化 平时我们在使用MySQL的时候,怎么评估系统的运行状态,怎么快速定位系统瓶颈,又如何快速解决问题呢? 本文总结了多年来MySQL优化的经验,系统介绍MySQL优化的方法. OS性能 ...

  8. OpenCV实现SIFT图像拼接源代码

    OpenCV实现SIFT和KDtree和RANSAC图像拼接源代码,此源代码由Opencv2.4.13.6和VC++实现,代码本人已经调试过,完美运行,效果如附图.Opencv2.4.13.6下载地址 ...

  9. N-grams模型、停顿词(stopwords)和标准化处理 - NLP学习(2)

    在上一节<Tokenization - NLP(1)>的学习中,我们主要学习了如何将一串字符串分割成单独的字符,并且形成一个词汇集(vocabulary),之后我们将形成的词汇集合转换成计 ...

  10. 【集训试题】exam 信心考 最小割

    题意概述: 有N个人,A,B两个考场.如果学生i在A考场,总信心值增加xi:如果学生i在B考场,总信心值增加yi.其中还有m对好友,当第i对好友的两个人都在A考场时,总信心值增加ai:如果两人都在B考 ...