核心动画基于QuartzCore框架,只能用于CALayer,可以实现3D效果,它在子线程中执行动画,不会阻塞主线程。

要实现核心动画,主要使用CABasicAnimation实现单步动画、使用CAKeyframeAnimation实现帧动画。

动画的主要属性有duration、keyPath、value、repeatCount等。

动画执行完毕后默认会复位,要取消复位,需要以下两行代码:

anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;

要实现单步动画,使用CABasicAnimation对象即可:

利用keyPath指定操作的属性,使用toValue指定变化到的值。

CABasicAnimation *anim = [CABasicAnimation animation];
anim.duration = 0.5f;
anim.keyPath = @"transform";
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0, 1, 0)];
anim.repeatCount = 100;
// 动画默认会复位,要取消复位,首先禁止动画移除,然后设置保持新位置。
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
[_blueView.layer addAnimation:anim forKey:nil];

要实现帧动画,通过CAKeyframeAnimation对象,通过多个value指定动作,或者通过贝塞尔曲线指定路径都可以:

多个value:

CAKeyframeAnimation *anim2 = [CAKeyframeAnimation animation];
anim2.duration = 0.5f;
anim2.keyPath = @"position";
anim2.repeatCount = 100;
NSValue *p1 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(50, 0, 0)];
NSValue *p2 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)];
NSValue *p3 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-50, 0, 0)];
NSValue *p4 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)];
anim2.values = @[p1,p2,p3,p4];
anim2.removedOnCompletion = NO;
anim2.fillMode = kCAFillModeForwards;

路径:

CAKeyframeAnimation *anim2 = [CAKeyframeAnimation animation];
anim2.duration = 0.5f;
anim2.keyPath = @"position";
anim2.repeatCount = 100;
anim2.removedOnCompletion = NO;
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100,100,200,200)];
anim2.path = path.CGPath;
anim2.fillMode = kCAFillModeForwards;

不要忘记把动画添加到layer。

转载于:https://www.cnblogs.com/aiwz/p/6154055.html

(一二一)核心动画基础相关推荐

  1. IOS开发基础之核心动画 基础动画、关键帧、组动画案例

    IOS开发基础之核心动画 基础动画.关键帧.组动画案例 案例源码在我的主页里.实现效果图 // // ViewController.m // 30-核心动画 // // Created by 鲁军 o ...

  2. OS开发UI篇—核心动画(基础动画)

    文顶顶 最新博文发布地址:花田半亩(wendingding.com) iOS开发UI篇-核心动画(基础动画) iOS开发UI篇-核心动画(基础动画) 一.简单介绍 CAPropertyAnimatio ...

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

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

  4. Core Animation 文档翻译 (第二篇)—核心动画基础要素

    前言 核心动画为我们APP内Views动画和其他可视化元素动画提供了综合性的实现体系.核心动画不是我们APP内Views的替代品,相反,它是一种结合Views来提供更好性能和支持Content动画的技 ...

  5. Core Animation(核心动画)

    iOS开发UI篇-核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量 ...

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

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

  7. 06-CABasicAnimation基础核心动画

    06-CABasicAnimation基础核心动画 核心动画只作用在层上面. 动画的本质是改图层的某一个属性. CABasicAnimation *anim = [CABasicAnimation a ...

  8. iOS核心动画详解swift版----基础动画

    2019独角兽企业重金招聘Python工程师标准>>> iOS核心动画详解swift版---基础动画 创建工程,添加2个ViewController,通过rootViewContro ...

  9. iOS:CALayer核心动画层

    CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...

  10. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

最新文章

  1. python处理pdf实例_Python实战-从菜鸟到大牛的进阶之路pdf_Python教程
  2. python中约瑟夫环程序_Python实现约瑟夫环问题的方法
  3. 深入理解Java中的final关键字
  4. 密码学:RSA加密算法详解
  5. Linux kernel 3.10内核源码分析--TLB相关--TLB概念、flush、TLB lazy模式
  6. 《Excel最强功能-数据透视表》 网课笔记
  7. C语言与C++的区别,从7个角度来区分C语言与C++
  8. 动态加入JS及加入CSS
  9. mysql between 等于_MySQL中BETWEEN子句的用法详解
  10. 亿级数据量场景下,如何优化数据库分页查询方法?
  11. SFML 与 VS2015 的安装配置
  12. python做定时任务的方式及优缺点_使用Python做定时任务及时了解互联网动态
  13. 使用html查看dicom,使用LEADTOOLS HTML5 Medical Viewer从任何地方查看DICOM图像教程
  14. 【软件安装使用】pano2vr教程
  15. Linux主目录下的文件夹名称改为英文
  16. prometheus 阿里云短信告警
  17. rabbitMQ的使用概述及使用rabbitMQ进行短信验证码发送案例
  18. 《大规模元搜索引擎技(1)》一第1章 绪言
  19. (转)Python--matplotlib绘图可视化知识点整理
  20. Use history mode for router? Vue-router 中hash模式和history模式的区别

热门文章

  1. C++ std::condition_variable 是什么 有什么用 条件变量 线程同步 wait wait_for notify_one notify_all
  2. Hyperledger Fabric教程(1)--Hyperledger Fabric 老版本 1.1.0 快速部署安装
  3. 微信小程序云开发教程-微信小程序的JS基础-视图层数据更新
  4. override java field_JAVA方法的重载(overload)和覆盖(override)
  5. 机器字长 存储字长 指令字长 机器字长
  6. cdlinux之U盘启动cdlinux破解wifi(计算机系破解无线密码的方式 就不使用wifi万能钥匙了)-- 没有发现无线网卡
  7. html基础之input属性
  8. mysql创建触发器怎么保存_如何创建使用mysql触发器?
  9. js原生继承几种方式
  10. 阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用