@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *likeBtn;
@property (nonatomic, strong) CAEmitterLayer *emitterLayer;
@end
//添加爆炸效果
- (void)explosion{
? ? _emitterLayer = [CAEmitterLayer layer];
? ? CAEmitterCell *cell = [[CAEmitterCell alloc] init];
? ? cell.name = @"explosionCell";
? ? cell.lifetime=.7;
? ? cell.birthRate=4000;
? ? cell.velocity=50;//中間值
? ? cell.velocityRange = 15;//(50+-15)
? ? cell.scale=.03;
? ? cell.scaleRange=.02;
? ? cell.contents = (id)[UIImage imageNamed:@"sparkle"].CGImage;
? ? //設置粒子系統(tǒng)大小杭跪,位置二拐,方向
? ? _emitterLayer.name = @"explosionLayer";
? ? _emitterLayer.emitterShape = kCAEmitterLayerCircle;
? ? _emitterLayer.emitterMode = kCAEmitterLayerOutline;
? ? _emitterLayer.emitterSize = CGSizeMake(25, 25);
? ? _emitterLayer.emitterCells = @[cell];
? ? _emitterLayer.renderMode = kCAEmitterLayerOldestFirst;
? ? _emitterLayer.masksToBounds = NO;
? ? _emitterLayer.birthRate = 0;
? ? _emitterLayer.position = CGPointMake(CGRectGetWidth(_likeBtn.bounds)/2, CGRectGetHeight(_likeBtn.bounds)/2);
? ? [_likeBtn.layer addSublayer:_emitterLayer];
- (void)clickAction:(UIButton*)sender {
? ? sender.selected= !sender.selected;
? ? //關鍵幀動畫
? ? CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
? ? if(sender.selected) {
? ? ? ? anim.values=@[@3,@.8, @1,@1.2, @1];
? ? ? ? anim.duration=.6;
? ? ? ? [self addExplosionAnim];
? ? }else{
? ? ? ? anim.values=@[@.8,@1.0];
? ? ? ? anim.duration=.4;
? ? }
????[_likeBtn.layer addAnimation:anim forKey:nil];
}
- (void)addExplosionAnim{
? ? _emitterLayer.beginTime = CACurrentMediaTime();
? ? _emitterLayer.birthRate = 1;
? ? dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.15 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
? ? ? ? _emitterLayer.birthRate = 0;
? ? });
}