CAEmitterLayer 的使用

Posted gallon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAEmitterLayer 的使用相关的知识,希望对你有一定的参考价值。

转自:https://segmentfault.com/a/1190000008580771

CAEmitterLayer和CAEmitterCell 主要来实现简单的例子效果:

 

 

代码如下:

- (void)setEmitter{
    //添加背景图
    UIImage *bgImage = [UIImage imageNamed:@"bg.jpeg"];
    self.view.backgroundColor = [UIColor     colorWithPatternImage:bgImage];
    
    //粒子图层
    CAEmitterLayer *snowLayer = [CAEmitterLayer layer];
    snowLayer.backgroundColor = [UIColor redColor].CGColor;
    //发射位置
    snowLayer.emitterPosition = CGPointMake(0, 100);
    snowLayer.emitterZPosition = -20;
    //发射源的尺寸
    snowLayer.emitterSize = CGSizeMake(640, 1);
    //发射源的形状
    snowLayer.emitterMode = kCAEmitterLayerSurface;
    //发射模式
    snowLayer.emitterShape = kCAEmitterLayerLine;
    //存放粒子种类的数组
    NSMutableArray *snow_array = @[].mutableCopy;
    
    for (NSInteger i=1; i<5; i++) {
        //snow
        CAEmitterCell *snowCell = [CAEmitterCell emitterCell];
        snowCell.name = @"snow";
        //产生频率
        snowCell.birthRate = 15.0f;
        //生命周期
        snowCell.lifetime = 30.0f;
        //运动速度
        snowCell.velocity = 1.0f;
        //运动速度的浮动值
        snowCell.velocityRange = 10;
        //y方向的加速度
        snowCell.yAcceleration = 2;
        //抛洒角度的浮动值
        snowCell.emissionRange = 0.5*M_PI;
        
//        snowCell.contentsScale = 0.2;
        //自旋转角度范围
        snowCell.spinRange = 0.25*M_PI;
        //粒子透明度在生命周期内的改变速度
        snowCell.alphaSpeed = 2.0f;
        //cell的内容,一般是图片
        NSString *snow_str = [NSString stringWithFormat:@"snow"];
        snowCell.contents = (id)[UIImage imageNamed:snow_str].CGImage;
        
        [snow_array addObject:snowCell];
    }
    
    //添加到当前的layer上
    snowLayer.shadowColor = [[UIColor redColor]CGColor];
    snowLayer.cornerRadius = 1.0f;
    snowLayer.shadowOffset = CGSizeMake(1, 1);
    snowLayer.emitterCells = [NSArray arrayWithArray:snow_array];
    [self.view.layer insertSublayer:snowLayer atIndex:0];
}

 

以上是关于CAEmitterLayer 的使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 CAEmitterLayer 围绕圆形或 CGPath 绘制粒子

CAEmitterLayer 的使用

iOS:在屏幕上捕获 CAEmitterLayer 粒子

CAEmitterLayer

CAEmitterLayer 动画在设备上不起作用

如果为它设置了 beginTime,CAEmitterLayer 不会添加基本动画