前言

  这篇文章主要是针对核心动画(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核心动画详解(一)的更多相关文章

  1. iOS核心动画详解(CABasicAnimation)

    前言 上一篇已经介绍了核心动画在UI渲染中的位置和基本概念,但是没有具体介绍CAAnimation子类的用法,本文将介绍CABasicAnimation及其子类CASpringAnimation的用法 ...

  2. iOS应用开发详解

    <iOS应用开发详解> 基本信息 作者: 郭宏志    出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...

  3. [转] ReactNative Animated动画详解

    http://web.jobbole.com/84962/     首页 所有文章 JavaScript HTML5 CSS 基础技术 前端职场 工具资源 更多频道▼ - 导航条 - 首页 所有文章 ...

  4. iOS开发:详解Objective-C runTime

    Objective-C总Runtime的那点事儿(一)消息机制 最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题.当然还有一些其他问题也几乎 ...

  5. iOS开发-Runtime详解

    iOS开发-Runtime详解 简介 Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的.比如: [recei ...

  6. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

  7. IOS 核心动画之CAKeyframeAnimation - iBaby

    - IOS 核心动画之CAKeyframeAnimation - 简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation ...

  8. 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

    原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...

  9. iOS中-Qutarz2D详解及使用

    在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...

随机推荐

  1. Sublime Text快捷键去除空白行 - 转载请保留原文链接:https://www.noniu.com/qianduan/sublime-text-kongbaihang.html

    如果使用notepad++或者Dreamweaver的朋友,应该知道有个快捷键或者功能按钮,可以实现删除文档空白行的功能.虽然空白行不会影响程序运行,但是会占一定的空间,对于有处女座特质的程序员来说, ...

  2. web ul li

    <html> <head> <style type="text/css"> ul{float:right} ul li{float:left; ...

  3. mahout相关介绍

    https://blog.csdn.net/xiaopihaierletian/article/details/72674592 https://www.cnblogs.com/zlslch/p/67 ...

  4. 创建一个很大的EMP表 EMP_LARGE

    --CREATE TABLE EMP_LARGE AS SELECT * FROM EMP ; ---先复制一张EMP表 DECLARE --声明变量 v_loop NUMBER; v_num NUM ...

  5. Makefile 13——理解make的解析行为

    make是以从上到下的顺序读入Makefile中的内容的.然而,处理Makefile中的语句却并非完全从上到下. 大体上,make处理一个Makefile分为两个阶段.第一个阶段包含: 1.make读 ...

  6. iOS swift跑马灯滚动可以点击

    跑马灯,从右至左循环滚动显示信息,并且支持点击事件,使用swift4.0语法完成,更加简介,通用性强,布局部分全部使用snpkit 代码: // // HXQMarqueeView.swift // ...

  7. 【实验一 】Spring Boot 集成 hibernate & JPA

    转眼间,2018年的十二分之一都快过完了,忙于各类事情,博客也都快一个月没更新了.今天我们继续来学习Springboot对象持久化. 首先JPA是Java持久化API,定义了一系列对象持久化的标准,而 ...

  8. Android 启动界面的实现(转载)

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  9. FOUC - Flash Of Unstyled Content 文档样式闪烁

      问题描述 偶然间看到FOUC这个单词,在Google里找了半天终于发现了它的含义:Flash Of Unstyled Content.它指的是在某些情况下,IE在加载网页时会出现短暂的CSS样式失 ...

  10. C语言 百炼成钢26

    /* 题目62: 有一下特征字符串"eerrrrqqAB33333ABa333333ABjsfdsfdsa" 编写一个业务函数, 实现功能1:实现按照子串"AB" ...