美文网首页
水波纹效果

水波纹效果

作者: 一只浩子 | 来源:发表于2017-07-23 11:21 被阅读0次
    1. 效果图


      水波纹.gif
    2. 实现代码
    CALayer * spreadLayer;
        spreadLayer = [CALayer layer];
        CGFloat diameter = 160;  //扩散的大小
        spreadLayer.bounds = CGRectMake(0,0, diameter, diameter);
        spreadLayer.cornerRadius = diameter/2; //设置圆角变为圆形
        spreadLayer.position = self.scanCodeBtn.center;
        spreadLayer.backgroundColor = COLOR_GREEN.CGColor;
        // 把扩散层放到按钮下面
        [self.layer insertSublayer:spreadLayer below:self.scanCodeBtn.layer];
    
      CAMediaTimingFunction * defaultCurve = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
      CAAnimationGroup * animationGroup = [CAAnimationGroup animation];
      animationGroup.duration = 2.5;//1.75
      animationGroup.repeatCount = INFINITY;//重复无限次
      animationGroup.removedOnCompletion = NO;
      animationGroup.timingFunction = defaultCurve;
      
      //尺寸比例动画
      CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.xy"];
      scaleAnimation.fromValue = @0.5;//开始的大小
      scaleAnimation.toValue = @1.0;//最后的大小
      scaleAnimation.duration = 1.5;//动画持续时间
      
      //透明度动画
      CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
      opacityAnimation.duration = 2.5;
      opacityAnimation.values = @[@1, @0.5,@0];//透明度值的设置
      //    opacityAnimation.values = @[@1, @0.67,@0.33];//透明度值的设置
      opacityAnimation.keyTimes = @[@0, @0.5,@1.0];//关键帧
      //    opacityAnimation.keyTimes = @[@0, @0.33,@0.67];//关键帧
      opacityAnimation.removedOnCompletion = NO;
      
      animationGroup.animations = @[scaleAnimation, opacityAnimation];//添加到动画组
      [spreadLayer addAnimation:animationGroup forKey:@"pulse"];
    
    1. Demo地址

    相关文章

      网友评论

          本文标题:水波纹效果

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