CoreAnimation (CALayer 动画)
CoreAnimation基本介绍:
- CoreAnimation动画位于iOS框架的Media层
- CoreAnimation动画实现需要添加QuartzCore.Framework
- CoreAnimation基本上是LayerAnimation
CoreAnimation分类:
CoreAnimation作用:
CoreAnimation
CALayer基本介绍
CALayer的常用属性
CABasicAnimation
CAKeyframeAnimation
CAAnimationGroup
CASpringAnimation
XIB分别设置几个button然后关联方法,代码展示:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation ViewController
#pragma mark - CABasicAnimation
- (IBAction)CABasicAnimation:(id)sender {
// 第一步:创建动画对象
CABasicAnimation *basicAnimation = [CABasicAnimation animation];
// 第二步:告诉layer层需要执行什么样的动画(后边设置的内容为CALayer的相关属性)
basicAnimation.keyPath = @"position"; // position 改变位置的
// 第三步:告诉layer从哪里来,到哪里去
basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(, )];
basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(, )];
// 注意点: 如果要实现图片不会到原来点,需要以下两句代码
basicAnimation.removedOnCompletion = NO;
// 设置保存动画状态的内容
basicAnimation.fillMode = kCAFillModeForwards; // 第四步:设置动画持续的时长
basicAnimation.duration = 6.0f;
// 第五步:将要执行的动画添加到calayer上
[self.imageView.layer addAnimation:basicAnimation forKey:@"basic"];
// *************翻转效果
CABasicAnimation *basic = [CABasicAnimation animation];
basic.keyPath = @"transform";
// 设置翻转的地方
basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, , , )];
basic.duration = 0.2f;
[self.imageView.layer addAnimation:basic forKey:@"aaaa"];
// 根据key去移除动画
// [self.imageView.layer removeAnimationForKey:@"basic"];
} #pragma mark - CAKeyframeAnimation
- (IBAction)CAKeyAnimation:(id)sender {
// 第一步:创建对象
CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animation];
// 第二步:设置动画轨迹
keyAnimation.keyPath = @"transform.rotation";
// 第三步:设置翻转的角度 (弧度计算公式:度数/180*M_PI)
keyAnimation.values = @[@(- / 180.0 * M_PI), @( / 180.0 * M_PI), @(- / 180.0 * M_PI)];
// 第四步:设置时长
keyAnimation.duration = 15.0f;
// 第五步:添加动画到layer层
[self.view.layer addAnimation:keyAnimation forKey:@"bbbb"];
} #pragma mark - CAAnimationGroup
- (IBAction)CAAnimationGroup:(id)sender {
// 平移动画
CABasicAnimation *basic1 = [CABasicAnimation animation];
basic1.keyPath = @"transform.translation.y"; // 按照y轴平移
basic1.toValue = @();
// 缩小动画
CABasicAnimation *basic2 = [CABasicAnimation animation];
basic2.keyPath = @"transform.scale"; // 缩小
basic2.toValue = @(0.3);
// 旋转动画
CABasicAnimation *basic3 = [CABasicAnimation animation];
basic3.keyPath = @"transform.rotation"; // 旋转
basic3.toValue = @(M_PI); // 需要创建管理各个动画的动画组
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[basic1,basic2,basic3];
// group 会自动分配时间
group.duration = 5.0f; [self.imageView.layer addAnimation:group forKey:@"ccccc"];
} #pragma mark - CASpring
- (IBAction)CASpring:(id)sender {
// 设置对象
CASpringAnimation *spring = [CASpringAnimation animation];
spring.keyPath = @"transform.scale";
spring.fromValue = @;
spring.toValue = @0.2;
spring.duration = 3.0f; [self.imageView.layer addAnimation:spring forKey:@"ddddd"];
} @end
总结:
CoreAnimation (CALayer 动画)的更多相关文章
- iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...
- 使用Instruments中的CoreAnimation分析动画
使用Instruments中的CoreAnimation分析动画 1. 打开Instruments中的CoreAnimation 2. 运行前的准备工作 要注意勾选以下选项,便于调试 3. 运行与调试 ...
- 实现UIView的无限旋转动画(非CALayer动画)
实现UIView的无限旋转动画(非CALayer动画) 效果: 素材: 源码: // // ViewController.m // Animation // // Created by YouXian ...
- CALayer动画的暂停,恢复,以及结束时候的回调
CALayer动画的暂停,恢复,以及结束时候的回调 源码如下: // // ViewController.m // AnimationLineView // // Created by YouXian ...
- CoreAnimation动画(CALayer动画)
#pragma mark - CABasicAnimation动画 - (IBAction)basicAnimation:(UIButton *)sender { // 1.创建动画对象 CABasi ...
- iOS CoreAnimation 核心动画
一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...
- iOS CALayer动画中使用的3个tree
在网上经常看到关于layer的tree的描述,不太理解,今天找到了官方文档,原文在Core Animation Programming Guide 中. Layer Trees Reflect Dif ...
- CoreAnimation 核心动画二 锚点
锚点: anchorPoint 以锚点为中心 执行动画 (与 渔夫固定船的点时一致的) anchorPoint 默认是 0.5,0.5 (注意: 锚点 是一个比例) anchorPoint ...
- CoreAnimation —— CALayer
概述 如上篇博文讲述,UIView中封装了很多系统方法,可以满足我们的大部分需求.但是,其也有很多限制.那些方法产生的动画基本单元为UIView,是非常重量级的对象,而且也不支持三维布局,大部分是对视 ...
随机推荐
- ArrayList-VS-LinkedList
ArrayList 是List接口的实现类:底层的数据结构是数组,而LinkedList底层数据结构是双向循环链表. 所以在查询时ArrayList效率高,增删时LinkedList高.由于List中 ...
- WTL error C3861: 'DDX_Control': identifier not found
error C3861: 'DDX_Control': identifier not found 继承类加上 public CWinDataExchange<CMainDlg>, ...
- USACO Seciton 5.4 Canada Tour(dp)
因为dp(i,j)=dp(j,i),所以令i>j. dp(i,j)=max(dp(k,j))+1(0<=k<i),若此时dp(i,j)=1则让dp(i,j)=0.(因为无法到达此状态 ...
- UVa 1658 Admiral(最小费用最大流)
拆点费用流 --------------------------------------------------------------------- #include<cstdio> # ...
- C++的常量折叠(三)
背景知识 在开始之前先说一下符号表,这个编译器中的东西.下面看一下百度百科中的描述: 符号表是一种用于语言翻译器中的数据结构.在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如 ...
- 我用过的Linux命令--虚拟机和宿主机的网络连接方式
VMWare提供了三种工作模式,它们是bridged(bridged模式:对应网卡vment0).NAT(网络地址转换模式:对应网卡vment8)和host-only(主机模式:对应网卡vment1) ...
- pure学习笔记
最近研究Pure,发现这个对于写css来说确实是个好的框架,特此总结了一番,如有错误或不足的地方,欢迎交流指点,轻拍. 此文运用的是优雅的Markdown而书 Pure学习笔记 #写在最前 1# Pu ...
- [LeetCode]题解(python):084-Largest Rectangle in Histogram
题目来源: https://leetcode.com/problems/largest-rectangle-in-histogram/ 题意分析: 给定一个数组,数组的数字代表这个位置上的bar的高度 ...
- 高质量程序设计指南C/C++语言——malloc/free使用要点
- ASP.NET 使用My97DatePicker日期控件
首先要下载该控件的包,下载地址:http://pan.baidu.com/s/1Aa5gk 引用文件 <script src="js/My97DatePicker/WdatePicke ...