重要的两个方法:1.动画的数组:animations 2.启动的时间 beginTime

注意:动画组设置了持续时间(duration)可能会导致动画组里面的持续时间不管用

代码如下:

#import "ViewController.h"

@interface ViewController ()

{

CALayer * fllowers;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

[self addBgView];

[self addFllower];

}

点击屏幕开始动画

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

[self addAnimationGroup];

}

背景图

-(void)addBgView{

UIImageView * image = [[UIImageView alloc]initWithFrame:self.view.frame];

image.image = [UIImage imageNamed:@"背景.jpg"];

[self.view addSubview:image];

}

在背景图上添加CALayer(花瓣)

-(void)addFllower{

UIImage * img = [UIImage imageNamed:@"花瓣"];

fllowers = [[CALayer alloc]init];

fllowers.position = CGPointMake(100, 200);

fllowers.bounds = CGRectMake(0, 0, img.size.width, img.size.height);

fllowers.contents = (id)img.CGImage;

[self.view.layer addSublayer:fllowers];

}

#pragma mark -------------添加动画组----------------

-(void)addAnimationGroup{

CAAnimationGroup *group = [CAAnimationGroup animation];

group.animations = @[[self rotationAnimation],[self dropAnimation]];

group.duration = 10;

//    动画开始的时间

//    CACurrentMediaTime() 获得当前的时间

//    从调用这个方法开始,5秒之后 执行这个动画

group.beginTime = CACurrentMediaTime()+5;

group.removedOnCompletion = NO;

group.fillMode = kCAFillModeBoth;

[fllowers addAnimation:group forKey:@"group"];

}

//旋转效果

-(CABasicAnimation *)rotationAnimation{

CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

rotation.toValue = @(M_2_PI*3);

rotation.removedOnCompletion = NO;

return rotation;

}

//关键帧动画,设置花瓣掉落的曲线

-(CAKeyframeAnimation *)dropAnimation{

CAKeyframeAnimation * drop = [CAKeyframeAnimation animationWithKeyPath:@"position"];

//    drop.path =

CGPathRef pathref = CGPathCreateMutable();

CGPathMoveToPoint(pathref, NULL, fllowers.position.x, fllowers.position.y);

//   CGFloat cp1x, CGFloat cp1y,  设置两个点,在这两个点之间画曲线

//     CGFloat x, CGFloat y 终止点

CGPoint endPoint = CGPointMake(80, 600);

CGPathAddCurveToPoint(pathref, NULL,160 ,280 ,-30 ,500 , endPoint.x, endPoint.y);

drop.path = pathref;

CGPathRelease(pathref);

return drop;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

二.背景图和花瓣图

         花瓣: 

三.

IOS-用动画组制作花瓣掉落效果(另附iOS动画图表)的更多相关文章

  1. ios基础动画、关键帧动画、动画组、转场动画等

    概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...

  2. iOS:核心动画之动画组CAAnimationGroup

    CAAnimationGroup——动画组 动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性说明: ...

  3. Core Animation 动画的使用:关键帧动画、基础动画、动画组

    首先让我们了解下什么是 Core Animation,Core Animation 为核心动画,他为图形渲染和动画提供了基础.使用核心动画,我们只需要设置起点.终点.关键帧等一些参数,剩下的工作核心动 ...

  4. 之三:CAAnimationGroup - 动画组

    动画组顾名思义就是将多个不同的动画效果组合起来同时作用于一个层上 代码演示: // 创建基本路径 CGMutablePathRef path = CGPathCreateMutable(); // 设 ...

  5. 使用Unity3D自带动画系统制作下雨效果

    之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪 步骤 ...

  6. css3动画的原理 及 各种效果制作

    1. 制作小球弹动效果 在这篇文章中,我们将会去探究一下浏览器是如何去处理CSS Animations和CSS Transitions的,   c 以便使你在写一些动画效果之前就可以对该动画在浏览器中 ...

  7. Unity3d中使用自带动画系统制作下雨效果(一)

    之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...

  8. iOS 动画组

    其实早在一个多月以前就已经实现了动作组播放的功能,不过当时感觉好像没有什么难度并没有放在心上,今天突然要用到动画组,发现已经忘记了,所以又将原来的代码翻出来看了下.最后决定还是写下来,以备不时之需.动 ...

  9. IOS第18天(9,核心动画-动画组)

    ****动画组 // 核心动画都是假象,不能改变layer的真实属性的值// 展示的位置和实际的位置不同.实际位置永远在最开始位置 #import "HMViewController.h&q ...

随机推荐

  1. 浅谈iOS中MVVM的架构设计与团队协作

    说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...

  2. iOS 分类和继承

    iOS 中分类(Categories) 和 继承(Inherit)有相同的功能,但在一些细节上又有差异,简单介绍一下两者的异同. 分类可以在不知道系统类源代码的情况下,为这个类添加新的方法.分类只能用 ...

  3. matlab s变换

    A4=readdata('E:\mydata.TXT');[st,t,f] = st(A4(1:1000,2)); surf(t,f,10*log10(abs(st)),'EdgeColor','no ...

  4. java反射快速入门(二)

    上一遍博文 , 简单介绍java 反射的常用接口,本遍博文, 我会结合项目开发的实际例子讲解下 java反射的使用 现在有个需求, 要将一个对象转换成xml格式, 或者将一串xml转换一个对象, 这时 ...

  5. 【转】Netty那点事(四)Netty与Reactor模式

    [原文]https://github.com/code4craft/netty-learning/blob/master/posts/ch4-reactor.md 一:Netty.NIO.多线程? 时 ...

  6. 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

    本文转载:http://blog.csdn.net/playing9c/article/details/7471918 http://blog.csdn.net/beelinkerlidejun/ar ...

  7. Windows 7 EXE图标丢失修复方法

    有过Win7下的一些EXE文件图标莫名奇妙丢失,但功能却正常的情况吗?这是图标缓存的问题,应该是Win7的bug. 在命令提示符下输入下列命令即可恢复. 以下是代码片段: taskkill /im e ...

  8. Start-Process传递变量

    如果$b="aa,bb" Start-Process PowerShell.exe -Argumentlist "d:\w.ps1 $a $b $c" Star ...

  9. jQuery遍历json

    使用 each var anObject = {one:1,two:2,three:3}; $.each(anObject,function(name,value) { alert(name); al ...

  10. Matlab画图-非常具体,非常全面

    Matlab画图 强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本參数就能得到所需图形,这类函数称为高层画图函数. ...