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 ...
随机推荐
- 好的git教程
1.GitHub使用教程for VS2012 http://www.cnblogs.com/yc-755909659/p/3753355.html
- jquery validation 简单验证手机号码
js代码 // 手机号码验证 jQuery.validator.addMethod("isMobile", function(value, element) { var lengt ...
- Java中的二维数组
Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...
- jsp应用bootstrap表格应用实例
一.初始化表格 <div style="margin-top: 80px;margin-left:45px;margin-right:30px;overflow-x: scroll&q ...
- 【转】phpmyadmin万能密码漏洞
影响版本:2.11.3 / 2.11.4 利用方法:用户名处写入‘localhost’@'@”则登录成功. (注意全部是英文标点符号,最后一个为英文双引号) 附上几个php爆绝对路径的办法: phpM ...
- JFinal的Shiro权限管理插件--玛雅牛 / JFinalShiro
http://git.oschina.net/myaniu/jfinalshiroplugin JFinalShiroPlugin JFinal的Shiro插件,实现权限管理. 升级说明 1)支持JF ...
- android学习日记13--数据存储之SharedPreference
android 数据存储 作为一个完整的应用程序,数据存储必不可少.android 提供了五种不同的数据存储方式:SharedPreferences.SQLite.ContentProvider.文件 ...
- 转ABAP将内表行列转换实例(动态内表) .
把内表的行列转换,网上的例子很多,但是新人想看懂,几乎很难,所以总结下我是怎么完成的. 比如:你的内表如图: 你想让内表最后展示成这样:如图: 那么完成之后会是这样: 完成这个过程,得用到动态内表.看 ...
- xss脚本攻击
xss脚本攻击不仅仅只是alert(1)就算完了,xss脚本攻击真正的用处是盗取普通用户的cookie,或者盗取管理员的cookie. xss分类(类型): 1. 反射型xss2. 存储型xss3. ...
- 心跳之旅—💗—iOS用手机摄像头检测心率(PPG)
[前情提要] 光阴似箭,日月如梭,最近几年,支持心率检测的设备愈发常见了,大家都在各种测空气测雪碧的,如火如荼,于是我也来凑一凑热闹.[0]这段时间,我完成了一个基于iOS的心率检测Demo,只要稳定 ...