美文网首页
CAEmitterLayer 粒子效果,点赞动画

CAEmitterLayer 粒子效果,点赞动画

作者: TeeMo_Yan | 来源:发表于2018-11-23 22:09 被阅读11次

@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;

    //设置粒子系统大小,位置,方向

    _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;

    });

}

相关文章

网友评论

      本文标题:CAEmitterLayer 粒子效果,点赞动画

      本文链接:https://www.haomeiwen.com/subject/nyvsqqtx.html