1、 如下对着两个类作个简单的介绍:数组
一、CAEmitterLayer。 这个主要是定义粒子原型发射层的形状和发射位置,发射源的尺寸以及发射的模式等。框架
二、CAEmitterCell 单个粒子的原型,一般有多个,根据cell的属性和CAEmitterCell的配置,由uikit随机生成,粒子原型的属性包括粒子的图片,颜色,方向,运动,缩放比例和生命周期等。动画
这两个类的参数看起来彷佛很简单,但这些参数的不一样组合配合上相对应图片,则能够实现许多意想不到的动画效果。ui
2、下面咱们经过一个简单的demo来初步认识一下这两个类的基础用法spa
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self setEmitter]; } - (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, 0); //发射源的尺寸 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.spinRange = 0.25*M_PI; //粒子透明度在生命周期内的改变速度 snowCell.alphaSpeed = 2.0f; //cell的内容,通常是图片 NSString *snow_str = [NSString stringWithFormat:@"snow%ld",i]; 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]; } @end
效果以下图所示:code
这是一个最简单的粒子效果的实现了,对于想实现其余的效果,只需对参数进行设置不一样参数间的搭配可以实现咱们大部分粒子系统的效果。为此必须详细掌握每一个参数的用处,这里便很少赘述。orm