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的成功很大一 ...
随机推荐
- java两个音频进入巩固期 玩的同时类似的伴奏
/** * * @param partsPaths 阵列要合成音频路径 * @param unitedFilePath 输入合并结果数组 */ public void uniteWavFile(Str ...
- Codeforces Round #191 (Div. 2)---A. Flipping Game
Flipping Game time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- BZOJ 1010: [HNOI2008]玩具包装toy
职务地址:http :// www . lydsy . com / JudgeOnline / problem . php ? id = 1010 题目大意:见原题. 算法分析: 设s[i]为c[i] ...
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
一.搭建開始前的准备 1.我用的MyEclipse2014版,大家也能够用IDEA. 2.下载Tomcat(免安装解压包).MySQL(zip包下载地址 免安装解压包,优点就是双击启动,最后我会把ba ...
- VS2013打包部署(图解)
首先要说明的是VS解决方案的配置Debug模式和Release有什么区别模式.Debug模式通常被称为调试模式,它包括调试信息,不优化的代码,序:Release模式通常叫做公布模式.不包括调试信息,可 ...
- Com组件的内存分配和释放,CredentialProvider SHStrDup 字符串拷贝问题
一.简单介绍 熟悉CredentialProvider的同学应该知道,他为一个Com组件,于是,在这里的内存分配(字符串拷贝)的一系列操作就要依照con的标准来. 二.Com组件的内存分配和释放 CO ...
- kobox : key_waitqueue.c -v1 如何内核线程,如何使用等待队列
平台:TQ2440 按键驱动 (1)在init中创建一个内核线程作为等待队列的处理函数,该内核线程是一个while(1)死循环,一直检測等待队列的触发条件 DECLARE_WAIT_QUEUE_HEA ...
- android USB OTG功能实现
一个.检查HW概要,确认是否支持OTG特征(vbus无论是动力,IDDIG pin连接是否正确) 两.如果HW确认支持OTG特征,然后根据以下方法被打开USB OTG功能及实现山: 如何打开USB O ...
- Redis 上实现的分布式锁
转载Redis 上实现的分布式锁 由于近排很忙,忙各种事情,还有工作上的项目,已经超过一个月没写博客了,确实有点惭愧啊,没能每天或者至少每周坚持写一篇博客.这一个月里面接触到很多新知识,同时也遇到很多 ...
- 完整具体解释GCD系列(二)dispatch_after;dispatch_apply;dispatch_once
原创Blog,转载请注明出处 本文阅读的过程中,如有概念不懂,请參照前专栏中之前的文章,假设还有疑惑,请留言. 这是我关于GCD专栏的地址 http://blog.csdn.net/column/de ...