CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值

属性解析:

values:就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧

path:可以设置一个CGPathRef\CGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略

keyTimes:可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的

说明:CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimation

#import "ViewController.h"@interface ViewController ()
@property(nonatomic,strong)UIButton *btn;
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];self.btn=[UIButton buttonWithType:UIButtonTypeSystem];self.btn.frame=CGRectMake(100, 100, 50, 40);[self.btn setTitle:@"按钮" forState:UIControlStateNormal];[self.btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:self.btn];
}-(void)btnClick:(id)sender
{//关键帧动画有两种实现方式 一种是通过设置values的值来改变 另一种是通过设置path属性值来改变//values属性CAKeyframeAnimation *keyframeAnimation=[CAKeyframeAnimation animation];keyframeAnimation.keyPath=@"position";NSValue *value1=[NSValue valueWithCGPoint:CGPointMake(100, 100)];NSValue *value2=[NSValue valueWithCGPoint:CGPointMake(200, 100)];NSValue *value3=[NSValue valueWithCGPoint:CGPointMake(200, 200)];NSValue *value4=[NSValue valueWithCGPoint:CGPointMake(100, 200)];NSValue *value5=[NSValue valueWithCGPoint:CGPointMake(100, 100)];keyframeAnimation.values=@[value1,value2,value3,value4,value5];//values和keyTimes的个数是一样的 值在0-1之间 逐渐增加直到为1keyframeAnimation.keyTimes=@[[NSNumber numberWithFloat:0.1],[NSNumber numberWithFloat:0.3],[NSNumber numberWithFloat:0.5],[NSNumber numberWithFloat:0.75],[NSNumber numberWithFloat:1]];keyframeAnimation.removedOnCompletion=NO;keyframeAnimation.fillMode=kCAFillModeForwards;keyframeAnimation.duration=4.0;keyframeAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];keyframeAnimation.delegate=self;//设置动画的key 这样可以移除动画 [self.btn.layer removeAnimationForKey:<#(NSString *)#>][self.btn.layer addAnimation:keyframeAnimation forKey:@"cuiyw"];//path属性
//    CAKeyframeAnimation *keyframeAnimation=[CAKeyframeAnimation animation];
//    keyframeAnimation.keyPath=@"position";
//    CGMutablePathRef path=CGPathCreateMutable();
//    CGPathAddEllipseInRect(path, NULL, CGRectMake(100, 100, 200, 200));
//    keyframeAnimation.path=path;
//    keyframeAnimation.duration=5.0;
//    //ease 缓解kCAMediaTimingFunctionLinear 线性(匀速)|kCAMediaTimingFunctionEaseIn 先慢|kCAMediaTimingFunctionEaseOut 后慢|kCAMediaTimingFunctionEaseInEaseOut 先慢 后慢 中间快|kCAMediaTimingFunctionDefault 默认
//    keyframeAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
//    keyframeAnimation.removedOnCompletion=NO;
//    keyframeAnimation.fillMode=kCAFillModeForwards;
//
//    [self.btn.layer addAnimation:keyframeAnimation forKey:nil];
//    }
- (void)animationDidStart:(CAAnimation *)anim
{NSLog(@"开始动画");
}
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{NSLog(@"结束动画");}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

core Animation之CAKeyframeAnimation(关键帧动画)相关推荐

  1. 使用Core Animation对象来实现动画

    转载保留原文地址:http://blog.csdn.net/kqjob/article/details/10417461,转载的 在iOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现, ...

  2. iOS CAKeyframeAnimation关键帧动画

    概述 作为新年的开篇文章,首先祝福各位同仁新年快乐,万事大吉,技术薪资更上一层楼. 本篇文章简单的介绍一下CAKeyframeAnimation关键帧动画,之前的一篇文章介绍过CABasicAnima ...

  3. 动画总结 Core Animation 贝赛尔曲线 显式动画 隐式动画

    Core Animation 接下来详细介绍下动画的各个属性及作用 fromValue: 动画的开始值(Any类型, 根据动画不同可以是CGPoint.NSNumber等) toValue: 动画的结 ...

  4. iOS动画-从UIView到Core Animation

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

  5. iOS - Core Animation 核心动画

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

  6. iOS 核心动画 Core Animation浅谈

    代码地址如下: http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVi ...

  7. iOS核心动画Core Animation(一)

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

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

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

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

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

最新文章

  1. [C#]解决生成的缩略图模糊的问题
  2. mysql单机多实例主从_【转载】MySQL单机多实例安装并配置主从复制
  3. 应用程序添加到服务器,在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...
  4. 在Javascript中实现伪哈希表
  5. 中科院大学计算机研究生考试大纲,中国科学院大学《计算机原理》2019年硕士研究生入学考试大纲...
  6. 二叉树的建立与遍历(数据结构)
  7. Android日志系统Logcat源代码简要分析
  8. Java项目部署目录结构与部署方法 打包方法attilax总结 目录 1.1. Java web项目部署目录结构 1 2. Springboot项目的部署结构 2 3. Java项目的开发模式下目录
  9. 日历控件--MaterialCalendarView 详解
  10. 全民农场服务器维护上不去,全民农场微信授权失败登录不上解决方法
  11. ML-Agents案例之机器人学走路
  12. 微信公众号抢票系统开发笔记
  13. 网络游戏专业术语中英文对照版
  14. java五大浏览器,[Java教程]各主流浏览器(PC、移动端)userAgent属性信息
  15. 重新安装的nvidia显卡驱动
  16. Chrome打包扩展程序错误,清单文件缺失或不可读
  17. PCL1.10.1+VS2019+Qt5.14.2下载、安装及配置(强迫症福音~使用的软件均为最新版本)
  18. html5新年主题,HTML CSS3农历新年祝福语生成器
  19. 网页背景图片拉伸效果
  20. 您有一篇Maven 常用命令的文章,请注意查收!

热门文章

  1. 2021潍坊市高考成绩查询,潍坊2021高考成绩排名榜单,潍坊各高中高考成绩喜报
  2. 安卓平板电脑_盘点:2019年国内最受关注的安卓工业平板电脑实力厂商名录!...
  3. python实现yolo目标检测_从零开始PyTorch项目:YOLO v3目标检测实现
  4. 计算机系统安装和维护实验,2计算机系统安装维护实验报告.doc
  5. iOS 一行命令发布 Pod 框架
  6. C(第一个C程序) 和 C++ (第一个C++程序)对比碰撞
  7. python的基本知识点
  8. 360浏览器调用selenium
  9. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...
  10. Bash之break、continue和return命令在循环中的作用