iOS:核心动画之动画组CAAnimationGroup
#import "ViewController.h" @interface ViewController ()
@property (strong,nonatomic)CALayer *subLayer; //声明核心动画子层
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//创建子层
self.subLayer = [CALayer layer];
self.subLayer.bounds = CGRectMake(, , , );
self.subLayer.position = CGPointMake(, );
self.subLayer.backgroundColor = [[UIColor redColor]CGColor];
[self.view.layer addSublayer:self.subLayer];
//添加触摸手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];
tap.numberOfTapsRequired = ;
tap.numberOfTouchesRequired = ;
[self.view addGestureRecognizer:tap];
}
#pragma mark 返回一个实现旋转的基本动画
-(CABasicAnimation*)rotationAnimationFromValue:(CGFloat)fromValue toValue:(CGFloat)tovalue
{
//创建基本动画(用于旋转)
CABasicAnimation *baseAnimation = [[CABasicAnimation alloc]init]; //设置形变属性值为旋转属性值
baseAnimation.keyPath = @"transform.rotation.z"; //设置旋转初值
baseAnimation.fromValue = @(fromValue); //设置旋转终值
baseAnimation.toValue = @(tovalue); //设置旋转动画持续时间
baseAnimation.duration = 1.0f; //设置动画旋转结束后不恢复原状
baseAnimation.removedOnCompletion = NO;
baseAnimation.fillMode = kCAFillModeForwards; return baseAnimation;
}
#pragma mark 返回一个实现放缩的基本动画
-(CABasicAnimation*)scaleAnimationFromValue:(CGFloat)fromValue toValue:(CGFloat)tovalue
{
//创建基本动画(用于放缩)
CABasicAnimation *animScale = [[CABasicAnimation alloc]init]; //设置形变属性为放缩属性值
animScale.keyPath = @"transform.scale"; //设置放缩初值
animScale.fromValue = @(fromValue); //设置放缩终值
animScale.toValue = @(tovalue); //设置放缩动画持续时间
animScale.duration = 1.0f; //设置动画放缩结束后不恢复原状
animScale.removedOnCompletion = NO;
animScale.fillMode = kCAFillModeForwards; return animScale;
}
#pragma mark -tap触摸事件
-(void)tap:(UITapGestureRecognizer *)sender
{ //方式一:依次调用各个的动画,效果也是可以的
//旋转360度
//[self.subLayer addAnimation:[self rotationAnimationFromValue:-M_PI toValue:M_PI] forKey:@"baseAnimation"];
//放大2倍
//[self.subLayer addAnimation:[self scaleAnimationFromValue:1.0 toValue:2.0] forKey:@"animScale"]; //方式二:并发执行动画组中的所有动画
//创建动画组
CAAnimationGroup *Group = [[CAAnimationGroup alloc]init]; //将各种动画对象加入数组中
NSArray *animations = @[[self rotationAnimationFromValue:-M_PI toValue:M_PI],[self scaleAnimationFromValue:1.0 toValue:2.0]]; //动画数组中的动画的属性受动画组的统一控制
Group.animations = animations; //设置动画组中所有动画的持续时间
Group.duration = 1.0; //设置动画组中所有动画运行结束后不恢复原状
Group.removedOnCompletion = NO;
Group.fillMode = kCAFillModeForwards; //往子层中添加动画组
[self.subLayer addAnimation:Group forKey:@"Group"];
}

iOS:核心动画之动画组CAAnimationGroup的更多相关文章
- iOS 核心动画
核心动画(Core Animation) : •CoreAnimation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.fr ...
- IOS 动画专题 --iOS核心动画
iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...
- ios基础动画、关键帧动画、动画组、转场动画等
概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...
- iOS 核心动画 Core Animation浅谈
代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...
- iOS核心动画高级技巧之核心动画(三)
iOS核心动画高级技巧之CALayer(一) iOS核心动画高级技巧之图层变换和专用图层(二)iOS核心动画高级技巧之核心动画(三)iOS核心动画高级技巧之性能(四)iOS核心动画高级技巧之动画总结( ...
- iOS核心动画以及UIView动画的介绍
我们看到很多App带有绚丽狂拽的特效,别出心裁的控件设计,很大程度上提高了用户体验,在增加了实用性的同时,也赋予了app无限的生命力.这些华丽的效果很多都是基于iOS的核心动画原理实现的,本文介绍一些 ...
- iOS核心动画高级技巧之CALayer(一)
iOS核心动画高级技巧之CALayer(一) iOS核心动画高级技巧之图层变换和专用图层(二)iOS核心动画高级技巧之核心动画(三)iOS核心动画高级技巧之性能(四)iOS核心动画高级技巧之动画总结( ...
- iOS核心动画高级技巧-4
8. 显式动画 显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并 ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
随机推荐
- Android -- Layout布局文件里的android:layout_height等属性为什么会不起作用?
有的时候,我们配置好的布局文件,在加载完成添加到我们的Activity中后发现,并没有安装我们设置的属性来布局,比如我们设置了android:layout_marginTop="100dip ...
- multipart/form-data
Content-Type的类型扩充了multipart/form-data用以支持向服务器发送二进制数据
- C语言面向对象风格编程
前言 本文略谈C面向对象风格编程,如何使用过程式语言去模拟面向对象的特性?C面向对象的方式和形式很多,不一而足,本文的代码形式是模拟部分C++面向对象关键词并赋予其特性,这种方式对于初级程序员比较好理 ...
- Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题
Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...
- 【HDOJ】【3480】Division
DP/四边形不等式 要求将一个可重集S分成M个子集,求子集的极差的平方和最小是多少…… 首先我们先将这N个数排序,容易想到每个自己都对应着这个有序数组中的一段……而不会是互相穿插着= =因为交换一下明 ...
- jQuery - AJAX (keep for myself)
1. 简介:AJAX工作原理图 AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术.(如google地图) 目的:在不重载整个网页的情况下,AJAX 通 ...
- vsm shadowmap format
遇到个奇怪的问题. 在做vsm ,shadowmap format RGBA8 结果正常 RGBA16F 场景不形成阴影的地方变纯黑,因为sm里面这些地方变纯黑(感觉这个好修一些) RGBA32F 阴 ...
- 项目分析 NGPcontext
NGPcontext 之前对这个一直很疑惑,我一直认为只是在机器人方面有用处,但很有疑问,正在做这方面,我想好好看看到底是怎么运行的 bool NGP::init(NGPcontext context ...
- ajax 乱码
1. 在页面的中文变量前添加encodeURIComponent() $.ajax({ type: "POST", url: "", data:{ id:e ...
- openOffice将doc在线预览
最近,有个项目要用到类似DOCIN的文档转换和阅读的功能,于是就开始找相关的资料,最后总结出2种解决办法,以下就来探讨下两种方法的各自实现. 第一种:通过FLASH PAPER来转换DOC文档直接生成 ...