UI基础--烟花动画

首先我们先导入系统的库:

添加下面的代码即可:

#import "FireworksViewController.h"

@interface FireworksViewController ()

@end

@implementation FireworksViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor whiteColor];
    self.title = @"烟花动画";

    //设置重底部发射cells
    CAEmitterLayer *fireworksEmitter = [CAEmitterLayer layer];
    CGRect viewBounds = self.view.layer.bounds;
    //发射位置
    fireworksEmitter.emitterPosition = CGPointMake(viewBounds.size.width / 2.0, viewBounds.size.height - 200);
    //发射源大小
    fireworksEmitter.emitterSize = CGSizeMake(viewBounds.size.width / 2.0, 0.0);
    //发射模式
    fireworksEmitter.emitterMode = kCAEmitterLayerOutline;
    //发射形状
    fireworksEmitter.emitterShape = kCAEmitterLayerLine;
    //渲染模式(kCAEmitterLayerAdditive与kCAEmitterLayerUnordered相比较, 合并重叠的部分使看上去更亮);
    fireworksEmitter.renderMode = kCAEmitterLayerAdditive;
    //初始化随机产生的种子
    fireworksEmitter.seed = (arc4random()%100) + 1;
    // Create the rocket
    CAEmitterCell *rocket = [CAEmitterCell emitterCell];
    //设置每秒产生的粒子数
    rocket.birthRate = 2.0;
    //周围发射角度
    rocket.emissionRange = 0.0 * M_PI;
    //速度
    rocket.velocity = 350;
    //速度范围
    rocket.velocityRange = 200;
    //粒子的y方向的加速度分量
    rocket.yAcceleration = 75;
    //设置生命周期,即在屏幕上要显示多长时间
    rocket.lifetime = 1.02;

    rocket.contents = (id)[[UIImage imageNamed:@"DazRing"] CGImage];
    //粒子尺寸
    rocket.scale = 0.2;
    //粒子颜色
    rocket.color = [[UIColor redColor]CGColor];
    //粒子的颜色green,red,blue 能改变的范围
    rocket.greenRange = 1.0;
    rocket.redRange = 1.0;
    rocket.blueRange = 1.0;
    //子旋转角度范围
    rocket.spinRange = M_PI;

    // the burst object cannot be seen, but will spawn the sparks
    // we change the color here, since the sparks inherit its value
    CAEmitterCell* burst = [CAEmitterCell emitterCell];

    burst.birthRate            = 1.0;        // at the end of travel
    burst.velocity            = 0;
    burst.scale                = 2.5;
    //粒子red,blue,green 在生命周期内的改变速度
    burst.redSpeed            =-1.5;        // shifting
    burst.blueSpeed            =+1.5;        // shifting
    burst.greenSpeed        =+1.0;        // shifting

    burst.lifetime            = 0.35;

    // and finally, the sparks
    CAEmitterCell* spark = [CAEmitterCell emitterCell];

    spark.birthRate            = 400;
    spark.velocity            = 120;
    spark.emissionRange        = 2* M_PI;    // 360 deg
    spark.yAcceleration        = 75;        // gravity
    spark.lifetime            = 2;

    spark.contents            = (id) [[UIImage imageNamed:@"桃心"] CGImage];
    //缩放比例速度
    spark.scaleSpeed        =-0.2;
    spark.greenSpeed        =-0.1;
    spark.redSpeed            = 0.4;
    spark.blueSpeed            =-0.1;
    spark.alphaSpeed        =-0.25;

    //子旋转角度
    spark.spin                = 2* M_PI;

    //子旋转角度范围
    spark.spinRange            = 2* M_PI;

    // putting it together
    fireworksEmitter.emitterCells    = [NSArray arrayWithObject:rocket];
    rocket.emitterCells                = [NSArray arrayWithObject:burst];
    burst.emitterCells                = [NSArray arrayWithObject:spark];
    [self.view.layer addSublayer:fireworksEmitter];

    //设置背景图片
    UIImage *image = [UIImage imageNamed:@"1.jpg"];

    //__bridge id
    self.view.layer.contents = (__bridge id)(image.CGImage);

}

@end

效果:

时间: 2024-11-07 10:58:31

UI基础--烟花动画的相关文章

UI基础--粒子动画

粒子发送器:CAEmitterLayer 粒子:CAEmitterCell 渐变图层:CAGradientLayer 添加代码: @interface RootViewController () @property (nonatomic, strong) CAEmitterLayer *emitterLayer; @end @implementation RootViewController -(CAEmitterLayer *)emitterLayer{ if (_emitterLayer)

iOS开发UI篇—核心动画(基础动画)

iOS开发UI篇—核心动画(基础动画) 一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如果fillMode=kCAFillModeForwards和removedOnComletion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态.但

ios开发-UI基础-超级猜图

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 本篇文章介绍一个比较综合的小应用----超级猜图. 功能分析: 根据显示的图片,在下面的待选项按钮中选中正确答案按钮,选中的按钮会显示在正确答案按钮中 答案错误,答案颜色变为红色,分数减小 答案正确,答案颜色变为蓝色,两秒自动跳入下一题,分数增加 点击"下一题"可以进入下一个题目 点击"大图",可以放大显示图片,再次点击图片或者背景,图片缩小至原来大小 点

ios开发-UI基础-应用管理(单纯界面)改进5-使用代理实现监听下载按钮的点击(delegate)

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 前几篇文章介绍了一个应用管理的小应用,从最开始的单纯实现功能,一步一步就行改进\封装,上篇文章是使用xib进行了优化,本篇文章使用代理实现监听下载按钮的点击. 在原来的基础上,使用代理的主要思路分析: 首先要新建一个协议 声明协议的要实现的方法(一般为optional) 声明一个遵守该协议的代理的属性 使用代理,通知其代理完成操作 在代理中的实现步骤: 遵守协议 设置代理(一般通过拖线

iOS开发UI基础—xib的简单使用

iOS开发UI基础-xib的简单使用 一.简单介绍 xib和stotyboard的比较,一个轻量级一个重量级. 二.xib的简单使用 1.建立xib文件 建立的xib文件命名为appxib.xib 2.对xib进行设置 根据程序的需要,这里把view调整为自由布局 建立view模型(设置长宽等参数) 调整布局和内部的控件 完成后的单个view 3.使用xib文件的代码示例 YYViewController.m文件代码如下: 1 // 2 // YYViewController.m 3 // 10

iOS开发UI基础—transframe属性(形变)

iOS开发UI基础-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建"基于控件初始位置"的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建"基于trans

OS开发UI基础—手写控件,frame,center和bounds属性

OS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:sel

iOS开发UI基础—字典转模型(部分内容转载他人)

iOS开发UI基础-字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组来创建一个模型数组等等. 一.能完成功能的"问题代码" 1.从plist中加载的数据 2.实现的代码 1 // 2 // LFViewController.m 3 // 03-应用管理 4 // 5 // Created by apple on 14-5-22. 6 // Copyrigh

iOS开发UI基础—九宫格坐标计算

iOS开发UI基础-九宫格坐标计算 一.要求 完成下面的布局 二.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图. (3)可以先尝试逐个的添加格子,最后考虑使用for循环,完成所有uiview的创建 (4)加载app数据,根据数据长度创建对应个数的格子 (5)添加格子内部的子控件 (6)给内部的子控件装配数据 四.代码示例 1 // 2 // YYVie