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:梦野间摘要:近几年,软件的混淆强度一直在不断提升。基于编译器的混淆已经成为业界事实上的标准,最近的一些论文也表明软件的保护方式使用的是编译器级别的混淆。在这篇文章中,我…

android 弹起键盘把ui顶上去的解决办法

键盘输入框上面的ui布局必须为Relative相对布局。然后设置 <activityandroid:name".activity.HomeActivity"Android:windowSoftInputMode"adjustPan|stateHidden"></activity>转载于:https://www.cnblogs.com/zhaoleigege/p/5925831.html

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

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

Nginx/Apache发大招

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

第二轮冲刺-Runner站立会议08

今天完成的内容&#xff1a;简单的做了一下主界面的美化和日历界面的美化 遇到的问题&#xff1a;美化按钮还不能自己自定义按钮 如何解决&#xff1a;暂无思路 明天将要进行的内容&#xff1a;调试bug 转载于:https://www.cnblogs.com/Againzg/p/5544301.html

STM32串口通信中使用printf发送数据配置方法 开发环境 Keil

STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 已有 12456 次阅读2011-6-29 23:29 | 在STM32串口通信程序中使用printf发送数据&#xff0c;非常的方便。可在刚开始使用的时候总是遇到问题&#xff0c;常见的是硬件访真时无法进入main主函数&#xff0c;其实…

dmp文件查看表空间_innoDb文件

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

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

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

Codeforces Round #354 (Div. 2)

贪心 A Nicholas and Permutation #include <bits/stdc.h>typedef long long ll; const int N 1e5 5; int a[105]; int pos[105];int main() {int n;scanf ("%d", &n);for (int i1; i<n; i) {scanf ("%d", ai);pos[a[i]] i;}int ans abs …

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

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

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

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

WEB在线预览PDF

这是我在博客园发表的第一篇文章。以后会陆续把在线预览其他格式文档的解决方案发表出来。 解决思路&#xff1a;把pdf转换成html显示。 在线预览pdf我暂时了解3种解决方案&#xff0c;欢迎大家补充。 方案一&#xff1a; 利用pdf2html软件将PDF转换成HTML。 用法: PDF2HTML [选…

[算法]判断一个数是不是2的N次方

如果一个数是2^n&#xff0c;说明这个二进制里面只有一个1。除了1. a (10000)b a-1 (01111)b a&(a-1) 0。 如果一个数不是2^n&#xff0c; 说明它的二进制里含有多一个1。 a (1xxx100)b a-1(1xxx011)b 那么 a&(a-1)就是 (1xxx000)b&#xff0c; 而不会为0。 所以可…

VMware Ubuntu 全屏问题解决

在终端中输入&#xff1a; sudo apt install open-vm* 回车 自动解决

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

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

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

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

apache.commons.lang.StringUtils 使用心得

apache.commons.lang.StringUtils 使用心得 转载于:https://www.cnblogs.com/qinglizlp/p/5549687.html