IOS-用动画组制作花瓣掉落效果(另附iOS动画图表)
重要的两个方法: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动画图表)的更多相关文章
- ios基础动画、关键帧动画、动画组、转场动画等
概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...
- iOS:核心动画之动画组CAAnimationGroup
CAAnimationGroup——动画组 动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性说明: ...
- Core Animation 动画的使用:关键帧动画、基础动画、动画组
首先让我们了解下什么是 Core Animation,Core Animation 为核心动画,他为图形渲染和动画提供了基础.使用核心动画,我们只需要设置起点.终点.关键帧等一些参数,剩下的工作核心动 ...
- 之三:CAAnimationGroup - 动画组
动画组顾名思义就是将多个不同的动画效果组合起来同时作用于一个层上 代码演示: // 创建基本路径 CGMutablePathRef path = CGPathCreateMutable(); // 设 ...
- 使用Unity3D自带动画系统制作下雨效果
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪 步骤 ...
- css3动画的原理 及 各种效果制作
1. 制作小球弹动效果 在这篇文章中,我们将会去探究一下浏览器是如何去处理CSS Animations和CSS Transitions的, c 以便使你在写一些动画效果之前就可以对该动画在浏览器中 ...
- Unity3d中使用自带动画系统制作下雨效果(一)
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...
- iOS 动画组
其实早在一个多月以前就已经实现了动作组播放的功能,不过当时感觉好像没有什么难度并没有放在心上,今天突然要用到动画组,发现已经忘记了,所以又将原来的代码翻出来看了下.最后决定还是写下来,以备不时之需.动 ...
- IOS第18天(9,核心动画-动画组)
****动画组 // 核心动画都是假象,不能改变layer的真实属性的值// 展示的位置和实际的位置不同.实际位置永远在最开始位置 #import "HMViewController.h&q ...
随机推荐
- FIREDAC数据引擎
以前使用过BDE.ADO.DBX等数据引擎,后来发现它们都没有UNIDAC好用, 所以在很长的一段时间内中间件都使用UNIDAC作为数据引擎. 偶然的机会,使用了DELPHI XE5自带的FIREDA ...
- jquery中 cache: true和false的区别
true:会读缓存,可能真的到服务器上. 假如上次访问了a.html,第二次的时候得到的是上次访问的a.html的结果,而不是重新到服务器获取. false:会在url后面加一个时间缀,让它跑到服务器 ...
- rxjs5.X系列 —— Combination/Multicasting系列 api 笔记
欢迎指导与讨论 :) 前言 本文是笔者翻译 RxJS 5.X 官网各类operation操作系列的的第三篇 -- Combination组合与Multicasting广播.如有错漏,希望大家指出提醒O ...
- php中带mb的字符串处理函数
int strlen ( string $string ) int mb_strlen ( string $str [, string $encoding ] ) encoding参数为字符编码.如果 ...
- 剑指OFFER之从1到n中出现1的次数(九度OJ1373)
题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他.问题是:求出1~13的整数中1出现的次数,并算出100~130 ...
- IOS设置button 图片 文字 上下、左右
[btn setImage:imgNor forState:UIControlStateNormal]; [btn setImage:imgSel forState:UIControlStateSel ...
- 作为平台的Windows PowerShell(二)
在此系列文章的前一篇,我们看到了怎样使用System.Management.Automation.PowerShell 类来在c#应用程序中运行PowerShell 命令.在那些例子中,我们创建的都是 ...
- 新浪旗下的SAE云服务入门
前言: 云服务已经火热很多年了,到了现在已经基本进入稳定期,稍微有实力的公司都会推出免费的云存储,像百度的还几个T,速度也不错.如果不担心数据安全问题,代替平时的U盘还是没有问题.而SAE是新浪在20 ...
- Windows内核之进程基本含义以及进程的创建
进程 1 进程的含义: 1.1 一个是操作系统用来管理进程的内核对象. 内核对象也是系统用来存放关于进程的统计信息的地方. 1.2 还有一个是地址空间,它包括全部可运行模块或DL L 模块的代 ...
- js获取光标位置例子
<html><head><title>TEST</title><style>body,td { font-family: verdana, ...