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

效果:

原文地址:https://www.cnblogs.com/LzwBlog/p/5724829.html