==================================================================

一、触摸事件&手势识别

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基础 - 触摸事件&手势识别的更多相关文章

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

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

  2. iOS中—触摸事件详解及使用

    iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...

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

    知识点复习   1. 触摸事件&手势识别   1> 4个触摸事件,针对视图的 2> 6个手势识别(除了用代码添加,也可以用Storyboard添加)   附加在某一个特定视图上的, ...

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

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

  5. iOS的触摸事件的用法以及和手势识别器的区别

    1.首先来介绍下触摸事件和手势识别器的利与弊 触摸事件和手势识别器二者之间有直接的关系 手势识别器是在触摸事件的基础上演变过来的 当我们用到触摸事件时 默认的uiview是没有什么效果的 只能自定义v ...

  6. iOS的触摸事件

    在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件,我们称其为@''响应者对象''UIApplication,UIViewController,UIView都 ...

  7. IOS 拖拽事件(手势识别)

    @interface NJViewController () @property (weak, nonatomic) IBOutlet UIView *customView; @end @implem ...

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

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

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

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

随机推荐

  1. Android KK台,联系人列表#集团放置A~Z之前

    更改文件ContactLocaleUtils.java两 (Path:packages/contactsprovider/src/com/android/providers/contacts) 1. ...

  2. Mac OS X中报:java.io.UnixFileSystem.createFileExclusively(Native Method)的简单原因

    这个博客太简单了!想到可能有其它朋友也遇到这个问题,就记录一下. 今天把一个之前在Windows上的Java项目放到Mac OS X上执行,本来认为应该非常easy的事情,结果还是报: Excepti ...

  3. LCS 小结

    转载链接:http://www.cnblogs.com/PJQOOO/p/3897745.html 第一步:先计算最长公共子序列的长度. 实现第一步: 设一个C[i][j]: 保存Xi与Yj的LCS的 ...

  4. Linux下Nagios

    Linux下Nagios的安装与配置   一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机 ...

  5. Android[安德鲁斯] 文本Air Video 远程播放电脑视频

    苹果iOS下列.目前应用Air Video,能力iOS由Wifi远程直接播放电脑视频,无需看视频复制到手机.非常好用!最近使用Android打电话.展望类别似应用,找了很长一段时间没有找到.在仔细的思 ...

  6. .net的自定义JS控件,运用了 面向对象的思想 封装 了 控件(.net自定义控件开发的第一天)

    大家好!我叫刘晶,很高兴你能看到我分享的文章!希望能对你有帮助! 首先我们来看下几个例子 ,就能看到 如何 自定义控件! 业务需求: 制作  一个   属于 自己的    按钮 对象    ,然后 像 ...

  7. SEO 优化,网站推广优化教程100条(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)

    这篇文章不错.  http://www.cnblogs.com/zangdalei/archive/2010/08/31/1814047.html 看了一半之后的,觉得不太靠谱,很多都不懂. 于是 找 ...

  8. github basic usage in windows

    1. create a new accout, create orginazation, create repo 2. install git in your local pc Note: you c ...

  9. mongodb操作之使用javaScript实现多表关联查询

    一.数据控制 mongodb操作数据量控制,千万控制好,不要因为操作的数据量过多而导致失败. 演示一下发生此类错误的错误提示:

  10. C#中使用REDIS

    C#中使用REDIS 上一篇>> 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# ...