概述


  • 简介

    • 核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果
  • 注意事项

    • 核心动画的操作在子线程中执行,不会阻塞主线程
    • 核心动画直接作用与CALayer对象上,不是UIView对象上
  • 核心动画与UIView动画的区别

    • 核心动画不会改变控件的frame属性,显示的只是一种假象
    • UIView动画会改变控件的frame属性,显示的是控件真实地frame属性

核心动画类


  • 核心动画相关类的关系图

    • 此图来源官方文档,不知为何右下角不是CAKeyframeAnimation,而是协议。CAKeyframeAnimation为CAPropertyAnimation的可直接使用子类
  • CAAnimation与CAPropertyAnimation

    • 二者都是抽象类,不可以直接使用,需要使用其子类
    • CAAnimation可直接使用的子类,

      • CAAnimationGroup,组动画
      • CATransaction,转场动画
    • CAPropertyAnimation可直接使用的子类

      • CABasicAnimation,基本动画
      • CAKeyframeAnimation,关键帧动画

CAAnimation类


  • 3个重要的属性

    • timingFunction(CAMediaTimingFunction *),速度控制函数
    • delegate(id),动画代理
    • removedOnCompletion(BOOL),动画执行完毕是否将其从图层上移除

CAAnimation的代理方法


  • 注意

    • CAAnimation的代理方法是以NSObject分类的方式实现的,如图

  • 代理方法

    • 动画开始时调用
    - (void)animationDidStart:(CAAnimation *)anim;
    • 动画结束时调用
    - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;

CAMediaTiming协议


  • 常用属性如图中属性

    • beginTime(CFTimeInterval),开始时间
    • duration(CFTimeInterval),单次动画的执行时间
    • speed(float),动画速度
    • timeOffset(CFTimeInterval),从时间偏移量timeOffset开始执行动画,并将timeOffset之前的动画压缩并拼接到尾部
    • repeatCount(float),重复次数
    • repeatDuration(CFTimeInterval),动画的重复时间,与repeatCount两者选择时间最短者
    • autoreverses(BOOL),是否恢复到动画开始状态(以动画的方式)
    • fillMode(NSString *),动画的填充模式

动画的填充模式


  • 注意

    • 若要使填充模式有效,通常设置动画的removedOnCompletion属性为NO
  • 4种模式

    • kCAFillModeForwards,动画结束后,layer保持动画结束的状态
    • kCAFillModeBackwards,动画加入到layer中,立即进入动画初始状态等待动画开始执行
    • kCAFillModeBoth,同时具备以上两种模式
    • kCAFillModeRemoved,动画结束后,layer会恢复到原来的状态

动画的速度控制函数


  • kCAMediaTimingFunctionLinear,匀速
  • kCAMediaTimingFunctionEaseIn,缓慢进入,加速离开
  • kCAMediaTimingFunctionEaseOut,全速进入,减速到达目标地点
  • kCAMediaTimingFunctionEaseInEaseOut,缓慢进入,中途加速,减速到达目标地点
  • kCAMediaTimingFunctionDefault,默认速度,即kCAMediaTimingFunctionEaseInEaseOut

OC - 23.核心动画基础的更多相关文章

  1. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

  2. ios核心动画(基础动画)

    一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为du ...

  3. 核心动画基础动画(CABasicAnimation)关键帧动画

    1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATran ...

  4. iOS核心动画(基础篇)

    Core Animation相关内容基本介绍 此框架把屏幕上的内容组合起来,这个内容被分解成图层,放到图层树中,这个树形成了你能在应用程序看到的内容的基础 图层在iOS中就是CALayer类 当我们创 ...

  5. iOS核心动画(专用图层篇)

    之前的文章我们了解了Core Animation中图层的一些基础知识.没有看过的传送门在此: iOS核心动画基础篇 那么在了解了这些基础知识之后,接下来进入专用图层的了解 苹果为了方便和性能,封装了几 ...

  6. 06-CABasicAnimation基础核心动画

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. iOS基础 - 核心动画

    一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...

  8. iOS学习——核心动画之Layer基础

    iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...

  9. AJ学IOS(39)UI之核心动画之CABasicAnimation(基础动画)

    AJ分享,必须精品 一.CABasicAnimation简介 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPat ...

随机推荐

  1. 优雅的让Fragment监听返回键

    转载请注明出处:http://write.blog.csdn.net/postedit/40507387 Activity可以很容易的得到物理返回键的监听事件,而Fragment却不能.假设Fragm ...

  2. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事

    1.1 手机常见分辨率: 4:3VGA     640*480 (Video Graphics Array)QVGA  320*240 (Quarter VGA)HVGA  480*320 (Half ...

  3. java学习面向对象之内部类

    什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中. 那么内部类都有什么特点呢? 1.内部类可以访问包裹他的类的成员. 2.如果包裹他的类想访问被其包裹的类的话就得实例 ...

  4. Gitolite 构建 Git 服务器

    Gitolite 构建 Git 服务器 Gitolite 构建 Git 服务器作者: 北京群英汇信息技术有限公司网址: http://www.ossxp.com/版本: 0.1-1日期: 2010-1 ...

  5. WordPress BackWPup插件‘tab’参数跨站脚本漏洞

    漏洞名称: WordPress BackWPup插件‘tab’参数跨站脚本漏洞 CNNVD编号: CNNVD-201308-353 发布时间: 2013-08-26 更新时间: 2013-08-26 ...

  6. Android应用连接代理服务器状况监测解决

    最近项目里面有这样一个需求,由于项目涉密需要连接VPN通过网址映射去登录内部服务器,而且要通知客户vpn的连接状态.网上有许多类似的连接VPN的解决方案,我也尝试了很多种,下面先列出一种比较靠谱的方式 ...

  7. 数据结构之数组Array

    数组Array 基本操作 Status InitArray(int dimm,...)//若维数dim和随后的各维长度合法,则构造相应的数组A,并返回OK Status DestroyArray() ...

  8. House Robber II——Leetcode

    After robbing those houses on that street, the thief has found himself a new place for his thievery ...

  9. Unity3d 基于物理渲染Physically-Based Rendering之最终篇

    前情提要: 讲求基本算法 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF plus篇 Unity3d 基于物理渲染Physically-B ...

  10. 排序算法简介及其C实现

    排序算法(Sorting Algorithm)是计算机算法的一个组成部分. 排序的目标是将一组数据 (即一个序列) 重新排列,排列后的数据符合从大到小 (或者从小到大) 的次序.这是古老但依然富有挑战 ...