介绍
这篇文章将为大家详细讲解有关iOS中的粒子动画怎么利用CAEmitterLayer实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
CAGradientLayer继承自CALayer,它主要功能是能实现渐变的颜色
@ property(复制),NSArray * colors 渐变颜色的数组, @ property(复制),NSArray * locations 渐变颜色的区间分布, 位置的数组长度和颜色一致,一般不用设置,默认是nil,会平均分布。//[NSArray arrayWithObjects: NSNumber numberWithFloat: 0.0,, ,//,,,,,,(NSNumber numberWithFloat: 0.3), ,//,,,,,,(NSNumber numberWithFloat: 0.8), ,//,,,,,,(NSNumber numberWithFloat: 1.0), ,//,,,,,nil),, @property CGPoint  startPoint 映射位置中第一个位置, 用单位向量表示,比如(0,0)表示从左上角开始变化。默认值是(0.5,0.0)。 @property CGPoint  endPoint 映射位置中最后一个位置 ,用单位向量表示,比如(1,1)表示到右下角变化结束。默认值是(0.5,1.0)。
演示背景色代码
,//渐变色 ,CAGradientLayer * gradientLayer =, (CAGradientLayer 层);=,,gradientLayer.frame  self.view.bounds; ,[self.view.layer addSublayer gradientLayer):; ,UIColor * lightColor =, (UIColor colorWithRed: 40.0,, 255.0,格林:150.0,/,255.0,蓝色:200.0,/,255.0,α:1.0); ,UIColor * whiteColor =, (UIColor colorWithRed: 255.0,, 255.0,格林:250.0,/,255.0,蓝色:250.0,/,255.0,α:1.0);//可以设置多个颜色,=,gradientLayer.colors @ [(__bridge id) lightColor.CGColor (__bridge id) whiteColor.CGColor); ,//45度变色(由lightColor→白色)=,,gradientLayer.startPoint  CGPointMake (0, 0);=,,gradientLayer.endPoint  CGPointMake (1, 1),
雪花粒子发射器
, CAEmitterCell * cell =, [[CAEmitterCell alloc], init); ,//展示的图片 ,cell.contents =, (__bridge id  _Nullable) ([UIImage imageNamed: @" white"] .CGImage); ,//每秒粒子产生个数的乘数因子,会和层的出生率相乘,然后确定每秒产生的粒子个数=,cell.birthRate 2000; ,//每个粒子存活时长=,cell.lifetime 5.0; ,//粒子生命周期范围=,cell.lifetimeRange 0.3; ,//粒子透明度变化,设置为-0.4,就是每过一秒透明度就减少0.4,这样就有消失的效果,一般设置为负数。=,cell.alphaSpeed -0.2;=,cell.alphaRange 0.5; ,//粒子的速度=,cell.velocity 40; ,//粒子的速度范围=,cell.velocityRange 20; ,//周围发射的角度,如果为M_PI * 2,就可以从360度任意位置发射 ,//cell.emissionRange =, M_PI * 2; ,//粒子内容的颜色 ,//cell.color =, [[UIColor whiteColor], CGColor);//设置了颜色变化范围后每次产生的粒子的颜色都是随机的=,cell.redRange 0.5;=,cell.blueRange 0.5;=,cell.greenRange 0.5; ,//缩放比例=,cell.scale 0.2; ,//缩放比例范围=,cell.scaleRange 0.02; ,//粒子的初始发射方向=,,cell.emissionLongitude  M_PI; ,//Y方向的加速度=,cell.yAcceleration 70.0; ,//X方向加速度 ,//cell.xAcceleration =, 20.0;=,_emitterLayer [CAEmitterLayer 层); ,//发射位置=,,_emitterLayer.emitterPosition  CGPointMake (SCREEN_WIDTH/2.0, 0); ,//粒子产生系数,默认为1=,_emitterLayer.birthRate 1; ,//发射器的尺寸=,,_emitterLayer.emitterSize  CGSizeMake (SCREEN_WIDTH, 0); ,//发射的形状=,,_emitterLayer.emitterShape  kCAEmitterLayerLine; ,//发射的模式=,,_emitterLayer.emitterMode  kCAEmitterLayerLine; ,//渲染模式=,,_emitterLayer.renderMode  kCAEmitterLayerOldestFirst;=,_emitterLayer.masksToBounds 没有; ,//_emitterLayer.zPosition =, 1;=,_emitterLayer.emitterCells @(细胞);//emitterView是自己创建的一个视图 ,[self.emitterView.layer addSublayer: _emitterLayer];
代码中都有注释,这里进行简单的解释
<强> CAEmitterCell粒子单元
强>
- <李>
内容一般放一张图片,是我们粒子要展示的内容
李> <李>出生率每秒粒子产生个数的乘数因子,会和层的出生率相乘,然后确定每秒产生的粒子个数
李> <李>lifetimeRange所有的范围属性都是你设置的属性值加减它后得到一个范围,例如cell.lifetime=5.0,细胞。lifetimeRange=1.0;那么粒子的存活时间就是[4.0,6.0];