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的成功很大一 ...
随机推荐
- 《Javascript权威指南》十六学习笔记:BOM资源---BOM基本应用
BOM基本应用包括:管理浏览器历史记录.得到处理和解决浏览器的信息.本文介绍了这些应用程序. 一.浏览历史管理 1.history对象的方法和属性 History 对象包括用户(在浏览器窗体中)訪问过 ...
- 升级_宽视野Oracle图形升级(升级后dbca建库)—10.2.0.1.0提拔10.2.0.5.0
***********************************************声明********************************************** 原创作 ...
- Codeforces548D:Mike and Feet(单调栈)
Mike is the president of country What-The-Fatherland. There are n bears living in this country besid ...
- SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示
SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示 1,与MVC集成 见http://simpleinjector.codeplex.com/wikipage? ...
- C在宏定义中使用的语言可变参数
于C标准库的语言,printf.scanf.sscanf.sprintf.sscanf入输出函数,參数都是可变的.在调试程序时.我们可能希望定义一个參数可变的输出函数来记录日志,那么用可变參数的宏是一 ...
- 6天通吃树结构—— 第五天 Trie树
原文:6天通吃树结构-- 第五天 Trie树 很有段时间没写此系列了,今天我们来说Trie树,Trie树的名字有很多,比如字典树,前缀树等等. 一:概念 下面我们有and,as,at,cn,com这些 ...
- SpringMVC4 + Spring + MyBatis3
SpringMVC4 + Spring + MyBatis3 本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建. 1. web.xml 我 ...
- json 解析解乱码
1. 该法的字符编码: 串店txt文档文档都有自己的编码,例如utf-8,ansi等待,但当 存款txt文件.其编码将和txt编码文件本身一致. 例如,之前的字符编码ansi.txt该文件的编码是u ...
- php正则函数学习
原文:php正则函数学习 <?php /** * php正则函数学习 * * 原来的ereg 和eregi 函数已经废弃掉了,目前版本用preg_match代替 * * preg_match 在 ...
- TDD
初识TDD 首先说一下名词解释,TDD,英文名称Test-Driven Development,中文名称测试驱动开发,简单的断下句“测试/驱动/开发”,简单的理解一下,就是测试驱动着开发,大白话就是说 ...