CAEmitterLayer是一個高性能的粒子引擎 是用來創建實時粒子動畫, 比如:下雪 煙霧 火爆炸等
例如:點贊擴散的粒子效果
//點贊效果
self.emitter = [[CAEmitterLayer alloc] init];
? [self.btn.layer addSublayer:self.emitter];
? ? //發射源的形狀
? ? self.emitter.emitterShape = kCAEmitterLayerCircle;
? ? //發射的形狀(向外發射)
? ? self.emitter.emitterMode = kCAEmitterLayerOutline;
? ? //發著源的大小
? ? self.emitter.emitterSize = CGSizeMake(10, 0);
? ? //發著源的位置 按鈕的中心位置
? ? self.emitter.emitterPosition = CGPointMake(self.btn.frame.size.width/2, self.btn.frame.size.height/2);
? ? self.emitter.birthRate = 0;//不開始動畫(生成數量為0)
? ? CAEmitterCell *cell = [[CAEmitterCell alloc] init];//創建cell()
? ? //設置圖片
? ? cell.contents = (id)[UIImage imageNamed:@"sparkle.png"].CGImage;
? ? //設置粒子存活時間 秒為單位
? ? cell.lifetime = 0.5;
? ? //設置粒子存活時間的范圍 (不設置這個只存活1s 設置0.5 存活時間是0.5-1s 之間)
? ? cell.lifetimeRange = 0.1;
? ? //設置粒子的速度
? ? cell.velocity = 40;
? ? cell.velocityRange = 10; //? 范圍是由粒子的速度 和存活時間決定
? ? //粒子數量(每秒產生的數量)
? ? cell.birthRate = 2500;
? ? //? ? 粒子透明度 每秒透明度減少0.4
? ? cell.alphaSpeed = -0.4;
? ? //? ? 設置粒子顏色alpha能改變的范圍(設置0.1 每秒粒子的透明度減少 0.1-1)
? ? cell.alphaRange = 0.10;
? ? //縮放圖片
? ? cell.scale = 0.05;
? ? //縮放范圍
? ? cell.scaleRange = 0.02;
? ? self.emitter.emitterCells = @[cell];
按鈕的點擊事件
//開始 清除之前的粒子 (從現在開始生成)
? ? self.emitter.beginTime = CACurrentMediaTime();
? ? self.emitter.birthRate = 1;
? ? [self performSelector:@selector(stopAction) withObject:nil afterDelay:0.1];
- (void)stopAction {
? ? self.emitter.birthRate = 0;
}