三、关键帧动画:CAKeyframeAnimation

(1)values属性

values属性指明整个动画过程中的关键帧点。

(2)path属性

这是一个 CGPathRef  对象,默认是空的,当我们创建好CAKeyframeAnimation的实例的时候,可以通过制定一个自己定义的path来让某一个物体按照这个路径进行动画。这个值默认是nil,当其被设定的时候,values这个属性就被覆盖 。

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, rectLayer.position.x - 15, rectLayer.position.y - 15);
CGPathAddLineToPoint(path, NULL, 320 - 15, rectLayer.frame.origin.y);
CGPathAddLineToPoint(path, NULL, 320 - 15, rectLayer.frame.origin.y + 100);
CGPathAddLineToPoint(path, NULL, 15, rectLayer.frame.origin.y + 100);
CGPathAddLineToPoint(path, NULL, 15, rectLayer.frame.origin.y);
rectRunAnimation.path = path;
CGPathRelease(path);

(3)keyTimes属性

该属性是一个数组,用以指定每个子路径(AB,BC,CD)的时间。如果你没有显式地对keyTimes进行设置,则系统会默认每条子路径的时间为:ti=duration/(5-1),即每条子路径的duration相等,都为duration的1\4。当然,我们也可以传个数组让物体快慢结合。例如,你可以传入{0.0, 0.1,0.6,0.7,1.0},其中首尾必须分别是0和1,因此tAB=0.1-0, tCB=0.6-0.1, tDC=0.7-0.6, tED=1-0.7.....

(4)timeFunctions属性

用过UIKit层动画的同学应该对这个属性不陌生,这个属性用以指定时间函数,类似于运动的加速度,有以下几种类型。上例子的AB段就是用了淡入淡出效果。记住,这是一个数组,你有几个子路径就应该传入几个元素

 kCAMediaTimingFunctionLinear//线性kCAMediaTimingFunctionEaseIn//淡入kCAMediaTimingFunctionEaseOut//淡出kCAMediaTimingFunctionEaseInEaseOut//淡入淡出kCAMediaTimingFunctionDefault//默认

(5)calculationMode属性

该属性决定了物体在每个子路径下是跳着走还是匀速走,跟timeFunctions属性有点类似

const kCAAnimationLinear//线性,默认

const kCAAnimationDiscrete//离散无中间过程 keyTimes设置的时间仍生效 跳跃地出现在各个关键帧上

const kCAAnimationPaced//平均,keyTimes跟timeFunctions失效

const kCAAnimationCubic//平均,同上

const kCAAnimationCubicPaced//平均,同上

此外,动画的暂停与开始可以通过下面的方式做到:

-(void)pauseLayer:(CALayer*)layer {CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];layer.speed = 0.0;layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer {CFTimeInterval pausedTime = [layer timeOffset];layer.speed = 1.0;layer.timeOffset = 0.0;layer.beginTime = 0.0;CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;layer.beginTime = timeSincePause;
}

转载于:https://blog.51cto.com/5934497/1703455

IOS学习动画二之 Core Animation (3)相关推荐

  1. ios开发——使用CALayer和Core Animation做动画效果

    一. CALayer (一). CALayer简介 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView,其实UIV ...

  2. 玩转iOS开发:5.《Core Animation》CALayer的Transforms

    文章转至我的个人博客: https://cainluo.github.io/14777052484078.html 作者感言 之前我们所了解的CALayer都是比较抽象化, 好在<Core An ...

  3. IOS学习笔记二十三对象归档(NSKeyedArchiver、NSKeyedUnArchiver、NSCodeing)

    1.NSKeyedArchiver.NSKeyedUnArchiver 1).archiveRootObject:toFile 归档对象到这个路径文件 2).unarchiveObjectWithFi ...

  4. IOS学习笔记二十一(NSDictionary、NSMutableDictionary)

    1.NSDictionary.NSMutableDictionary 可以理解为java里面的map,一个key对应一个value,key不可以重复 NSDictionary不可变,NSMutable ...

  5. IOS学习笔记二十NSSet和NSMutableSet

    1.NSSet.NSMutableSet NSSet元素无序.不能重复 NSMutableSet元素无序.不能重复,有一些向集合中增加元素的功能.删除元素....... 2.测试Demo int ma ...

  6. IOS动画(Core Animation)总结 (参考多方文章)

    一.简介 iOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的 ...

  7. iOS动画集锦(Core Animation)

    iOS 动画主要是指 Core Animation 框架, Core Animation是 iOS 和 OS X 平台上负责图形渲染与动画的基础框架.Core Animation 可以作用于动画视图或 ...

  8. iOS动画-从UIView到Core Animation

    首先,介绍一下UIView相关的动画. UIView普通动画: [UIView beginAnimations: context:];[UIView commitAnimations]; 动画属性设置 ...

  9. iOS - Core Animation 核心动画

    1.UIView 动画 具体讲解见 iOS - UIView 动画 2.UIImageView 动画 具体讲解见 iOS - UIImageView 动画 3.CADisplayLink 定时器 具体 ...

最新文章

  1. 用jenkins搭建android自动打包环境
  2. JavaScript常用技巧之数组操作
  3. android camera 检测,检测Android Camera文件夹
  4. 大数问题(一个特别大的数需要用数组或字符串来表示)
  5. wex5 php开发,WeX5平台PHP开发 使用说明文档
  6. 【PAT - 甲级1045】Favorite Color Stripe(30分)(dp,LIS类问题)
  7. JS关键字和保留字汇总(小记)
  8. 关于“我的藏书阁:.NET/数据库应用开发”的几点看法。
  9. D3 Geographies
  10. Error:Connection activation failed: No suitable device found for this connection
  11. oracle找出大于1g的表,表占用太大空间问题!
  12. php 匹配标签内的文本内容 preg_match_all strip_tags
  13. JVM——字节码指令(转)
  14. 火狐插件 测试浏览器兼容性_在Firefox中测试和报告插件兼容性
  15. mac中实用的录音软件有哪些?
  16. 光线追踪与全域光渲染keyshot中文
  17. 极客日报:iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布
  18. 学习游戏服务器开发必看,C++游戏服务器开发常用工具介绍
  19. C语言重载宏函数的小技巧
  20. VPB测试 使用Osgdem运行例子

热门文章

  1. 关于Postfix邮件网关无法重启问题
  2. Windows数据类型探幽——千回百转你是谁?(1)
  3. 自定义Django的admin界面
  4. 马哥学习笔记——shell变量类型
  5. css区块定位之浮动与清除属性
  6. 我们的2009 梦想照进了现实
  7. 需求编写的几点经验之谈
  8. linux内核路由反向检查,反向路径过滤——reverse path filter
  9. MYSQL_使用外键约束(constraint)或触发器(trigger)来进行级联更新、删除
  10. python 斐波拉契递归 尾递归 备忘录 动态规划 迭代