概述


  • 简介

    • CABasicAnimation是抽象类CAPropertyAnimation的子类,可以直接使用
    • CABasicAnimation又称基本动画,从fromValue到toValue按照指定的动画属性执行动画
  • 注意事项
    • 一个动画对象可以同时添加到多个图层上
    • 对动画的配置必须放在动画添加到图层之前,否则不会呈现指定的动画效果

基本动画常用的属性


  • CABasicAnimation的属性

    • fromValue(id),执行动画属性的起始值。若不指定,则以该属性当前的值作为fromValue
    • toValue(id),执行动画属性的目的值
    • byValue(id),步进值
  • CAMediaTiming协议的属性
    • duration(CFTimeInterval),单次动画的执行时间
    • repeatCount(float),重复次数
    • autoreverses(BOOL),是否恢复到动画开始状态(以动画的方式)

基本动画的执行步骤


  • 创建CABasicAnimation动画对象
  • 指定执行动画的keyPath属性
  • 设置动画起始值与目的值
  • 配置动画的其他属性
  • 将动画添加到要执行动画的图层上

通过基本动画模拟心跳


  • 实现步骤

    • 通过storyboard创建需要执行动画的控件,并拥有它们

      @property (weak, nonatomic) IBOutlet UIView *redView;
      @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    • 添加动画

      - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
      {
      //创建基本动画属性
      CABasicAnimation *animation = [CABasicAnimation animation];
      //指定执行动画的keyPath属性
      animation.keyPath = @"transform.scale";
      //设置动画的起始值与目的值
      animation.fromValue = @1.0;
      animation.toValue = @0.8; /****配置动画的行为****/
      //以动画的方式回复到fromValue
      animation.autoreverses = YES;
      //单次动画的执行时间,据说每分钟心跳72次
      animation.duration = 60 / 72;
      //动画的重复次数
      animation.repeatCount = MAXFLOAT;
      //取消动画反弹效果
      animation.removedOnCompletion = NO;
      animation.fillMode = kCAFillModeForwards; //将动画添加到图层上
      [self.redView.layer addAnimation:animation forKey:nil];
      [self.imageView.layer addAnimation:animation forKey:nil];
      }
    • 执行效果如图:

    • 若不设置fromValue值,程序将会有Bug,即多次点击屏幕时动画停止,如图

      • 原因:若不指定fromValue,则以该属性当前的值作为fromValue
    • 若不取消反弹效果,动画结束,会瞬间回到fromValue状态,如图

    • 若指定autoreverses为YES,会以动画方式回到fromValue状态,如图

CoreAnimation-05-CABasicAnimation的更多相关文章

  1. CoreAnimation

    CoreAnimation 1.CABasicAnimation // position CABasicAnimation *ba = [CABasicAnimation animationWithK ...

  2. 【原】iOSCoreAnimation动画系列教程(二):CAKeyFrameAnimation【包会】

    在上一篇专题文章[原]iOSCoreAnimation动画系列教程(一):CABasicAnimation[包会]中我们学习了iOS核心动画CoreAnimation中CABasicAnimation ...

  3. Core Animation之CAKeyframeAnimation

    在上一篇专题文章中我们学习了iOS核心动画CoreAnimation中CABasicAnimation动画的使用方法.CABasicAnimation已经可以应付一些比较简单的应用场景了,比如view ...

  4. iOS经常使用类别

    我们发现,慢慢积累了很多自己写的各种类别的. .今天,无私.张贴 1.NSDateFomatter @interface NSDateFormatter (MyCategory) + (id)date ...

  5. CoreAnimation 核心动画 / CABasicAnimation/ CAKeyframeAnimation

    - (void)createBaseAnimation{ //基础动画 CABasicAnimation *animation = [CABasicAnimation animation]; anim ...

  6. iOS关于CoreAnimation动画知识总结

    一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了: ...

  7. CoreAnimation笔记

    核心动画继承结构 CoreAnimation Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Ani ...

  8. iOS CoreAnimation详解(一) 有关Layer的动画

    以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...

  9. iOS CoreAnimation 核心动画

    一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...

  10. ios基础篇(二十五)—— Animation动画(UIView、CoreAnimation)

    Animation主要分为两类: 1.UIView属性动画 2.CoreAnimation动画 一.UIView属性动画 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIVie ...

随机推荐

  1. ubuntu启动器和dash里应用图标不正常

    在以下目录: /usr/share/applications~/.local/share/applications 添加或编辑(pycharm图标不正常):jetbrains-pycharm.desk ...

  2. VC2013的一个bug

    前段时间在尝试使用一个C++的GUI库nana.这个库最大的特点在于使用现代C++风格去编写GUI程序,而不需要使用大量的比较丑陋的代码(如MFC中的各种宏),或者其它的非C++元素.这是一个比较新的 ...

  3. fork()函数详解

    原文链接:http://blog.csdn.net/jason314/article/details/5640969  一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函 ...

  4. 表上的DELETE操作

    在今天的文章里,我想给你快速展示下当我们从表里删除记录时,在SQL Server里发生了什么.首先我们来创建一个简单的表,在8KB的页上刚好能插入4条记录. -- Create a simple ta ...

  5. ActiveMQ学习(一)——MQ的基本概念

    1) 队列管理器 队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务. 2) 消息 在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的 ...

  6. IOS7中自动计算label的宽度和高度的方法

    #import "ViewController.h" @implementation ViewController - (void)viewDidLoad { [super vie ...

  7. IOS开发UI基础之Plis文件-字典转模型

    什么是plist文件? 在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低 因此,可以考虑将经常变的数据放在⽂文件中进⾏行存储,程 ...

  8. BlocksKit初见:一个支持将delegate转换成block的Cocoa库

    简介 项目主页: https://github.com/zwaldowski/BlocksKit BlocksKit 是一个开源的框架,对 Cocoa 进行了扩展,将许多需要通过 delegate 调 ...

  9. sprint3 总结

    sprint3 本次的主要任务是找项目中的bug,并与客户不断地沟通以满足客户的要求.队友主要负责找项目中的bug或提出一些建议.我主要是负责与客户沟通和修复bug.总的来说进展还算顺利. 团队贡献分 ...

  10. Manacher算法 - 求最长回文串的利器

    求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...