CoreAnimation (CALayer 动画)

CoreAnimation基本介绍:

  • CoreAnimation动画位于iOS框架的Media层
  • CoreAnimation动画实现需要添加QuartzCore.Framework
  • CoreAnimation基本上是LayerAnimation

 

CoreAnimation分类:

CoreAnimation作用:

CoreAnimation

 

 

CALayer基本介绍

 

CALayer的常用属性

 

CABasicAnimation

 

CAKeyframeAnimation

 

 

CAAnimationGroup

CASpringAnimation

 

XIB分别设置几个button然后关联方法,代码展示:

 1 @interface ViewController ()
 2 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 3 
 4 @end
 5 
 6 @implementation ViewController
 7 #pragma mark - CABasicAnimation
 8 - (IBAction)CABasicAnimation:(id)sender {
 9     // 第一步:创建动画对象
10     CABasicAnimation *basicAnimation = [CABasicAnimation animation];
11     // 第二步:告诉layer层需要执行什么样的动画(后边设置的内容为CALayer的相关属性)
12     basicAnimation.keyPath = @"position";  // position 改变位置的
13     // 第三步:告诉layer从哪里来,到哪里去
14     basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
15     basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 600)];
16     // 注意点: 如果要实现图片不会到原来点,需要以下两句代码
17     basicAnimation.removedOnCompletion = NO;
18     // 设置保存动画状态的内容
19     basicAnimation.fillMode = kCAFillModeForwards;
20     
21     // 第四步:设置动画持续的时长
22     basicAnimation.duration = 6.0f;
23     // 第五步:将要执行的动画添加到calayer上
24     [self.imageView.layer addAnimation:basicAnimation forKey:@"basic"];
25     // *************翻转效果
26     CABasicAnimation *basic = [CABasicAnimation animation];
27     basic.keyPath = @"transform";
28     // 设置翻转的地方
29     basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 0, 1)];
30     basic.duration = 0.2f;
31     [self.imageView.layer addAnimation:basic forKey:@"aaaa"];
32     // 根据key去移除动画
33     //    [self.imageView.layer removeAnimationForKey:@"basic"];
34 }
35 
36 #pragma mark - CAKeyframeAnimation
37 - (IBAction)CAKeyAnimation:(id)sender {
38     // 第一步:创建对象
39     CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animation];
40     // 第二步:设置动画轨迹
41     keyAnimation.keyPath = @"transform.rotation";
42     // 第三步:设置翻转的角度 (弧度计算公式:度数/180*M_PI)
43     keyAnimation.values = @[@(-300 / 180.0 * M_PI), @(300 / 180.0 * M_PI), @(-180 / 180.0 * M_PI)];
44     // 第四步:设置时长
45     keyAnimation.duration = 15.0f;
46     // 第五步:添加动画到layer层
47     [self.view.layer addAnimation:keyAnimation forKey:@"bbbb"];
48 }
49 
50 #pragma mark - CAAnimationGroup
51 - (IBAction)CAAnimationGroup:(id)sender {
52     // 平移动画
53     CABasicAnimation *basic1 = [CABasicAnimation animation];
54     basic1.keyPath = @"transform.translation.y";    // 按照y轴平移
55     basic1.toValue = @(400);
56     // 缩小动画
57     CABasicAnimation *basic2 = [CABasicAnimation animation];
58     basic2.keyPath = @"transform.scale";  // 缩小
59     basic2.toValue = @(0.3);
60     // 旋转动画
61     CABasicAnimation *basic3 = [CABasicAnimation animation];
62     basic3.keyPath = @"transform.rotation";   // 旋转
63     basic3.toValue = @(M_PI);
64     
65     // 需要创建管理各个动画的动画组
66     CAAnimationGroup *group = [CAAnimationGroup animation];
67     group.animations = @[basic1,basic2,basic3];
68     // group 会自动分配时间
69     group.duration = 5.0f;
70     
71     [self.imageView.layer addAnimation:group forKey:@"ccccc"];
72 }
73 
74 #pragma mark - CASpring
75 - (IBAction)CASpring:(id)sender {
76     // 设置对象
77     CASpringAnimation *spring = [CASpringAnimation animation];
78     spring.keyPath = @"transform.scale";
79     spring.fromValue = @1;
80     spring.toValue = @0.2;
81     spring.duration = 3.0f;
82     
83     [self.imageView.layer addAnimation:spring forKey:@"ddddd"];
84 }
85 
86 @end

总结:

转载于:https://www.cnblogs.com/crazygeek/p/5535996.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编为什么分段执行总是执行不了_iOS汇编教程(六)CPU 指令重排与内存屏障...

系列文章iOS 汇编入门教程(一)ARM64 汇编基础iOS 汇编入门教程(二)在 Xcode 工程中嵌入汇编代码iOS 汇编入门教程(三)汇编中的 Section 与数据存取iOS 汇编教程(四)基于 LLDB 动态调试快速分析系统函数的实现iOS 汇编教程(五)Objc Block 的内存布局和汇编表示前言具有 ARM 体系…

GD32 使用stm32 固件库

1、 系统 1) 晶振起振区别 描述:启动时间,GD32 与STM32 启动时间都是2ms,实际上GD 的执行效率快,所以ST 的HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)是2ms,但是这个宏定义值在GD 上时间就更加短了,所以要加大…

js反混淆还原工具_SATURN反混淆框架

本文为看雪论坛精华文章看雪论坛作者ID:梦野间摘要:近几年,软件的混淆强度一直在不断提升。基于编译器的混淆已经成为业界事实上的标准,最近的一些论文也表明软件的保护方式使用的是编译器级别的混淆。在这篇文章中,我…

python 多线程并发_寻找python大神!!!python如何多线程并发?

不是大神。尝试回答一下。 首先解释下什么叫做线程,什么叫做进程,在解释这两个概念前,我们还需要明白什么叫做GIL全局解释器锁。GIL 全局解释器锁: GIL(全局解释器锁,GIL 只有cpython有):在同一个时刻&…

Nginx/Apache发大招

导读网站程序的上传目录通常是不需要PHP执行解释权限,通过限制目录的PHP执行权限可以提网站的安全性,减少被攻击的机率。下面和大家一起分享下如何在Apache和Nginx禁止上传目录里PHP的执行权限。 Apache下禁止指定目录运行PHP脚本在虚拟主机配置文件中增…

dmp文件查看表空间_innoDb文件

一.文件总体概述InnoDb文件主要有以下文件1. 参数文件:启动需要的各种参数作2. 日志文件:记录mysql实例某种条件做出的响应而写入的文件,如错误日志、二进制日志、慢查询日志、查询日志等3. Socket文件:连接需要的文件…

论文笔记之:Deep Attention Recurrent Q-Network

Deep Attention Recurrent Q-Network 5vision groups 摘要:本文将 DQN 引入了 Attention 机制,使得学习更具有方向性和指导性。(前段时间做一个工作打算就这么干,谁想到,这么快就被这几个孩子给实现了,自愧…

linux c程序中内核态与用户态内存存储问题

Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应…

线程自动退出_C++基础 多线程笔记(一)

join & detachjoin和detach为最基本的用法,join可以使主线程(main函数)等待子线程(自定义的function_1函数)完成后再退出程序,而detach可以使子线程与主线程毫无关联的独立运行,当主线程执行…

数组拼接时中间怎么加入空格_【题解二维数组】1123:图像相似度

1123:图像相似度时间限制: 1000 ms 内存限制: 65536 KB【题目描述】给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的…

(旧)子数涵数·C语言——条件语句

首先,我们讲一下理论知识,在编程中有三种结构,分别是顺序结构、条件结构、循环结构,如果用流程图来表示的话就是: 那么在C语言中,如何灵活运用这三种结构呢?这就需要用到控制语句了。 而条件语句…

识别操作系统

使用p0f进行操作系统探测 p0f是一款被动探测工具,通过分析网络数据包来判断操作系统类型。目前最新版本为3.06b。同时p0f在网络分析方面功能强大,可以用它来分析NAT、负载均衡、应用代理等。 p0f的命令参数很简单,基本说明如下: l…

常用RGB颜色表

转载于:https://www.cnblogs.com/Itwonderful/p/5550800.html

linux ssh yum升级_Linux 运维必备的 13 款实用工具,拿好了

作者丨Erstickthttp://blog.51cto.com/13740508/2114819本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 运维人员有所帮助。1. 查看进程占用带宽情况 - NethogsNethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。下载:htt…

iOS应用如何支持IPV6

本文转自 http://www.code4app.com/forum.php?modviewthread&tid8427&highlightipv6 果然是苹果打个哈欠,iOS行业内就得起一次风暴呀。自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IPV6-Only的网络,大家便开始热火朝天的研…

SQL Server -- SQLserver 存储过程执行错误记录到表

SQLserver 存储过程执行错误记录到表 From: http://blog.csdn.net/leshami/article/details/51333650 对于在执行存储过程中碰到的一些错误,如果未及时捕获或者说传递给前端应用程序来,在这样的情形下,故障的排查显得尤为困难。基于此&…

Windows下C语言连接Oracle数据库

为什么80%的码农都做不了架构师?>>> 最近公司有个项目需要用到Oracle数据库,我负责前期的调研。由于项目要用到C和PHP两种语言,所以先收集这两种语言连接Oracle的方法。PHP使用的是Laravel框架,直接使用了Laravel-OCI…

SU suspecfk命令学习

用suplane生成平面,并查看其FK谱, 水平反射界面经FK变换后,波数为0, 正好处于临界,乃奎斯特频率, 有空间假频, Over,不足之处,欢迎批评指正。 转载于:https://www.cnblog…

dblink查询_分库数据如何查询统计

分库后的计算不能直接使用SQL;异构库 SQL 函数不尽相同;JAVA 硬编码实施难度大;即使借助透明网关访问远程数据库,分库性能优化也是头疼问题。一般常规办法:方法1:java硬编码简单的跨库count运算&#xff0c…

【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

类的继承案例解析&#xff0c;python相关知识延伸 作者&#xff1a;白宁超 2016年10月10日22:36:57 摘要&#xff1a;继<快速上手学python>一文之后&#xff0c;笔者又将python官方文档认真学习下。官方给出的pythondoc入门资料包含了基本要点。本文是对文档常用核心要点…