iOS核心动画详解(一)
前言
这篇文章主要是针对核心动画(Core Animation)的讲解,不涉及UIView的动画。因为内容较多,这篇文章会分为几个章节来进行介绍。本文主要是介绍核心动画的几个类之间的关系和CAAnimation基本属性、方法、协议,之后会陆续推出其子类用法。
基本概念
1.1 什么是核心动画
核心动画(Core Animation)是QuartzCore框架下一组功能强大的API,其动画基于layer层,通过对一些属性自定义值即可完成动画,非常方便而且简单。Base类是CAAnimation。核心动画层在iOSUI渲染中的位置,如图1.1。

图1.1
从图1.1可以看出,Core Animation位于UIkit的下一层,相比UIView可以制作更加复杂的动画。在往下看,OpenGL ES/OpenGL和Core Graphics更加底层,以后有机会再介绍这一层的内容。Graphics Hardware已经和硬件接轨了,不谈。
1.2 核心动画类簇
核心动画是一个类簇,base类是CAAimation,不能直接使用,要实例化其子类进行动画制作。其中CAPropertyAnimation用的不多,常用的类:CABasicAnimation、CATransition、CABasicAnimation、CAKeyframeAnimation,CASpringAnimation是iOS9之后加入的,可实现弹簧效果。如图1.2。

图1.2
基本属性和实例化方法
1.CAMediaTimingFunction *timingFunction;
这个属性用来设置某一段时间内,动画执行的方式
kCAMediaTimingFunctionLinear //线性,匀速
kCAMediaTimingFunctionEaseIn //渐进,动画缓慢进入,然后加速离开
kCAMediaTimingFunctionEaseOut //渐出,动画加速进入,然后缓慢离开
kCAMediaTimingFunctionEaseInEaseOut //渐进渐出,动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为。
kCAMediaTimingFunctionDefault // kCAMediaTimingFunctionEaseInEaseOut
2. BOOL removedOnCompletion;
动画执行完成后是否移除动画,如果设为YES,动画执行完成后动画会自动移除,此时view会回到初始状态。所以如果想要动画执行完成后要view保留最后的状态,removedOnCompletion要设置成NO。
3. id <CAAnimationDelegate> delegate;
动画代理,so easy
4. + (instancetype)animation;
与UIView比较
(1)性能强大,使用硬件加速,可以同时向多个图层添加不同的动画效果。
(2)接口易用,只需要少量的代码就可以实现复杂的动画效果。
(3)运行在后台线程中,在动画过程中可以响应交互事件(UIView动画默认动画过程中
不响应交互事件)。
(4)动画多元化,可组合动画,添加多段式动画。
结语
本文主要是介绍核心动画的基本概念以及在系统的位置和CAAnimation的基本知识。下一篇开始,依次介绍用来创建动画的常用的几个类。
iOS核心动画详解(一)的更多相关文章
- iOS核心动画详解(CABasicAnimation)
前言 上一篇已经介绍了核心动画在UI渲染中的位置和基本概念,但是没有具体介绍CAAnimation子类的用法,本文将介绍CABasicAnimation及其子类CASpringAnimation的用法 ...
- iOS应用开发详解
<iOS应用开发详解> 基本信息 作者: 郭宏志 出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...
- [转] ReactNative Animated动画详解
http://web.jobbole.com/84962/ 首页 所有文章 JavaScript HTML5 CSS 基础技术 前端职场 工具资源 更多频道▼ - 导航条 - 首页 所有文章 ...
- iOS开发:详解Objective-C runTime
Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...
- iOS开发-Runtime详解
iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的.比如: [recei ...
- iOS核心动画学习整理
最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...
- IOS 核心动画之CAKeyframeAnimation - iBaby
- IOS 核心动画之CAKeyframeAnimation - 简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation ...
- 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )
原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...
- iOS中-Qutarz2D详解及使用
在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...
随机推荐
- windows server 2003中端口默认不能使用问题
问题:在windows server 2003中IIS6.0新建站点,给了一个新端口(非80),然后配置好后不能访问 解决方案:系统内置防火墙需要添加对应端口,如下图: 即解决.
- Unix删除当前目录可执行文件
On GNU versions of find you can use -executable: find . -type f -executable -printFor BSD versions o ...
- dedecms使用
使用到了dedecms内容管理系统,遇到两个问题: 1.点击登录后,没有登录进去也没有任何提示,一片空白 解决办法:我是把网站从云主机拷贝下来的,但是忘了云主机上的数据库密码和自己本地的数据库密码不一 ...
- RIP协议两个版本对不连续子网的支持情况实验
一.连续子网与不连续子网 我们经常见到说RIPv1不支持不连续子网,仅支持连续子网,那么什么是连续子网,什么是不连续子网呢? l 不连续子网:指在一个网络中,某几个连续由同一主网划分的子网在中间被多 ...
- FastDFS安装详解
1.安装环境 os:centos6.5 Fastdfs版本:FastDFS_v5.08.tar.gz 下载地址:https://sourceforge.net/projects/fastdfs/fil ...
- 用Vue.js开发一个电影App的前端界面
我们要构建一个什么样的App? 我们大多数人使用在线流媒体服务(如Netflix)观看我们最喜欢的电影或者节目.这篇文章将重点介绍如何通过使用vue.js 2 建立一个类似风格的电影流媒体WEB交互界 ...
- 去掉点击map时的显示area边框
cus="true"的属性即可 如下: <img src="some.jpg" border="0" usemap="#ma ...
- DevelopmentValue
DevelopmentValue mysql为utf8为什么网页返回数据及写入mysql数据库均为乱码? eclipse运行配了maven之后,创建包也弹出这个错误,每次都弹 c语言怎么建立txt文件 ...
- 第二百零九节,jQuery EasyUI,Pagination(分页)组件
jQuery EasyUI,Pagination(分页)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Pagination(分页)组件的使 ...
- java算法-数学之美二
上一章已经说过利用数学思想来解决程序算法问题,实际上就是找规律.这在我们上学时经常遇到,比如给出一段数字,求某一个位置该填写什么数,只要找到规律那就迎刃而解.好了,废话不多说,再来看看案例分析. ...