• Core Animation


    • 简介

    ◦   核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果
    
    注意事项
    ◦   核心动画的操作在子线程中执行,不会阻塞主线程
    ◦   核心动画直接作用与CALayer对象上,不是UIView对象上
    
    核心动画与UIView动画的区别
    ◦   核心动画不会改变控件的frame属性,显示的只是一种假象
    ◦   UIView动画会改变控件的frame属性,显示的是控件真实地frame属性
    

    核心动画类

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

    这里写图片描述
    ◦ 此图来源官方文档,不知为何右下角不是CAKeyframeAnimation,而是协议。CAKeyframeAnimation为CAPropertyAnimation的可直接使用子类
    • CAAnimation与CAPropertyAnimation
    ◦ 二者都是抽象类,不可以直接使用,需要使用其子类
    ◦ CAAnimation可直接使用的子类,
    ▪ CAAnimationGroup,组动画
    ▪ CATransaction,转场动画
    ◦ CAPropertyAnimation可直接使用的子类
    ▪ CABasicAnimation,基本动画
    ▪ CAKeyframeAnimation,关键帧动画

    CAAnimation类

    1. • 3个重要的属性

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

    2. CAAnimation的代理方法

      • 注意
      ◦ CAAnimation的代理方法是以NSObject分类的方式实现的,
      • 代理方法
      ◦ 动画开始时调用
      • - (void)animationDidStart:(CAAnimation *)anim;

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


    3. 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
    
  • 相关阅读:
    js获取 DOM 里所有图片(包括背景和iframe)
    php 和 js互相调用
    mac 权限
    node 启动命令
    three.js THREE.MeshLine.js 回显3D路径
    Vue2, Vue3 开发单一html页面区别
    前端布局,相关链接
    jq国际化jquery.i18n.properties使用
    资料
    其它工具
  • 原文地址:https://www.cnblogs.com/H7N9/p/4888835.html
Copyright © 2020-2023  润新知