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 ...
 
随机推荐
- win8中如何禁用屏幕旋转的快捷键
			
程序员通常会使用ctrl+alt+方向键 里编辑代码,特别对于使用eclipse的程序员,更是如此,但是win8却把这一快捷键给占用了,很不爽,如何办,很简单.直接上图: 2.但是发现禁用之后并没有解 ...
 - 工作点滴积累(1)---MD5和编码
			
今天同事忽然问了一个问题,他发现同一个字符,比如"电影",用项目中的md5工具类生成的hash值和网上提供的在线MD5生成的hash值有时不一样,在只包含了字母字符串中,生成的ha ...
 - shell  进程查询相关的命令
			
同一个进程部署多个,如何知道删除哪个: ll /proc/ 会显示位置 查看pid下哪些socket链接 ll /proc//fd
 - eclipse部署Tomcat6 : The server does not support version 3.0 of the JEE Web module specification
			
为项目添加tomcat 6,发现不能添加,原因如下 这是因为Tomcat6不能为JavaEE3.0版本服务,把项目的版本降低到2.5就可以了 现在可以部署了
 - 【BZOJ】【1221】【HNOI2001】软件开发
			
网络流/费用流 说是这题跟餐巾计划一模一样……但我没做过啊……so sad 二分图建模是很好想的,但是要控制流量跟用了的毛巾一样多……oh my god 事实上对于每一天我们无论如何都是要消耗n[i] ...
 - add some template for ec-final
			
二维rmq 离线 init O( n*n*logn*logn ) query O(1) http://www.cnblogs.com/kuangbin/p/3227420.html 求1-n有多少个 ...
 - [Shoi2007]Bookcase 书柜的尺寸  dp
			
这道dp算是同类型dp中比较难的了,主要难点在于设置状态上: 如果像平时那样设置,必定爆空间没商量: 下面是一种思路: 先把输入进来的数据按h从大到小排序,这样就可以大大减少状态数, 然后设f[i][ ...
 - Nginx负载均衡介绍
			
Nginx真心牛逼 nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态.静态页面的分离,可以按照轮询.ip哈希.URL哈希.权重等多种方式 ...
 - [转]layoutSubviews总结
			
原文链接找不到了,转的时候别人也是转载的,但并未留下原创链接,就当是笔记了. ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size- (void)s ...
 - iOS7 状态栏 修改为白色字体的步骤
			
1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO2 在需要改变状态栏颜色的ViewController中在ViewDidLoad方 ...