@property (nonatomic, weak) CAEmitterLayer *emitterLayer;
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
// 開始來訪動畫
[self.emitterLayer setHidden:NO];
}
get方法
**
* 粒子動畫
*/
- (CAEmitterLayer *)emitterLayer
{
if (!_emitterLayer) {
CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];
// 發(fā)射器在xy平面的中心位置
emitterLayer.emitterPosition = CGPointMake(self.view.frame.size.width-50,self.view.frame.size.height-50);
// 發(fā)射器的尺寸大小
emitterLayer.emitterSize = CGSizeMake(20, 20);
// 渲染模式
emitterLayer.renderMode = kCAEmitterLayerUnordered;
// 開啟三維效果
// _emitterLayer.preservesDepth = YES;
NSMutableArray *array = [NSMutableArray array];
// 創(chuàng)建粒子
for (int i = 0; i<10; i++) {
// 發(fā)射單元
CAEmitterCell *stepCell = [CAEmitterCell emitterCell];
// 粒子的創(chuàng)建速率舶治,默認(rèn)為1/s
stepCell.birthRate = 1;
// 粒子存活時間
stepCell.lifetime = arc4random_uniform(4) + 1;
// 粒子的生存時間容差
stepCell.lifetimeRange = 1.5;
// 顏色
// fire.color=[[UIColor colorWithRed:0.8 green:0.4 blue:0.2 alpha:0.1]CGColor];
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"good%d_30x30", i]];
// 粒子顯示的內(nèi)容
stepCell.contents = (id)[image CGImage];
// 粒子的名字
// [fire setName:@"step%d", i];
// 粒子的運動速度
stepCell.velocity = arc4random_uniform(100) + 100;
// 粒子速度的容差
stepCell.velocityRange = 80;
// 粒子在xy平面的發(fā)射角度
stepCell.emissionLongitude = M_PI+M_PI_2;;
// 粒子發(fā)射角度的容差
stepCell.emissionRange = M_PI_2/6;
// 縮放比例
stepCell.scale = 0.3;
[array addObject:stepCell];
}
emitterLayer.emitterCells = array;
[self.view.layer addSublayer:emitterLayer];
_emitterLayer = emitterLayer;
}
return _emitterLayer;
}
點贊動畫.gif