iOS核心动画总结(一)

核心动画


  • Core Animation是一组非常强大的动画处理API,使用它能够做出非常炫丽的动画效果,而且往往是事半功倍!
  • 使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h>

开发步骤


  1. 初始化一个动画的对象CAAnimation并设置一些动画相关属性
  2. CALayer中可动画属性都可以通过CAAnimation实现动画效果,包括:opacity、position、transform、bounds、contents等(可以在API文档中搜索:CALayer Animatable Properties)
  3. 添加动画对象到层CALayer中,开始执行动画
  4. 通过调用CALayer的addAnimation:forKey增加动画到层CALayer中,这样就能触发动画了,通过用removeAnimationFoyKey可以停止层中的动画
  5. Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程

CAAnimation继承结构


01.png

注意:图中的黑色虚线代表“继承”某个类,红色虚线代表“遵守”某个协议

CAAnimation——简介


  • 是所有动画对象的父类,负责控制动画的持续时间和速度,是个抽象类,不能直接使用,应该使用它具体的子类
  • 属性说明:(红色代表来自CAMediaTiming协议的属性)
    1. duration:动画的持续时间
    • repeatCount:重复次数,无限循环可以设置HUGE_VALF或者MAXFLOAT
    • repeatDuration:重复时间
    • removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards
    • fillMode:决定当前对象在非active时间段的行为。比如动画开始之前或者动画结束之后
    • beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间
    • timingFunction:速度控制函数,控制动画运行的节奏
    • delegate:动画代理

CAAnimation——动画填充模式


  • fillMode属性值(要想fillMode有效,最好设置removedOnCompletion = NO)

    1. kCAFillModeRemoved这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态
    • kCAFillModeForwards当动画结束后,layer会一直保持着动画最后的状态

    • kCAFillModeBackwards在动画开始前,只需要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始。

    • kCAFillModeBoth这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态

CAAnimation——速度控制函数


  • 速度控制函数(CAMediaTimingFunction)
    1. kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉

    2. kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开

    3. kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地

    4. kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,688评论 6 30
  • Core Animation Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,...
    45b645c5912e阅读 3,154评论 0 21
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,262评论 5 13
  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...
    请叫我周小帅阅读 3,313评论 1 23
  • 一、简介 Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽...
    莦婼姑娘阅读 1,053评论 0 4

友情链接更多精彩内容