重要的两个方法: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. 转载 ASP.NET中如何取得Request URL的各个部分

    转载原地址 http://blog.miniasp.com/post/2008/02/10/How-Do-I-Get-Paths-and-URL-fragments-from-the-HttpRequ ...

  2. MSSQLSERVER数据库- LEFT JOIN后面跟着WHERE竟变成内联 解决方法

    在LEFT JOIN后面跟着WHERE竟变成内联.百度后看到这个解决方法. 记录如下: select sre.*, co.description from subscribedratingelemen ...

  3. JS幻灯片,循环播放,滚动导航,jQuery平滑旋转幻灯片

    最近在帮别人改一些东西,在网上找了好久,但是没有相同的,自己改了下,拿出来分享下: 先展示下效果把: index.html 页面展示代码 <!DOCTYPE html PUBLIC " ...

  4. utf8乱码解决方案[适合tomcat部署的jsp应用]

    转:http://blog.csdn.net/cn_gaowei/article/details/6673539 1.       java类: CharacterEncodingFilter  im ...

  5. URL是否有效

    unit Unit1;interfaceuses    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Syste ...

  6. Android 屏幕画笔实现

    Tuya.rar

  7. 详解Android ActionBar之二:ActionBar添加Tabs标签和下拉导航

    本节主要讲解ActionBar如何添加Tabs标签和下拉导航. 一.添加标签 Tabs 在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重 ...

  8. 02---CSS整理

    一.概述       CSS(cascading style sheet) 层叠样式表       提供比HTML更强大的页面排版.美化工具       CSS将网页内容和显示样式进行分离,提高了显示 ...

  9. html页面docutype前面出现字符会导致IE678 margin:0 auto;失效

    html页面<!DOCTYPE html>前面出现字符会导致IE678 margin:0 auto;失效

  10. 文件I/O之fcntl函数

    fcntl函数可以改变已打开的文件的性质. #include <fcntl.h> int fcntl( int filedes, int cmd, ... /* int arg */ ); ...