-
效果圖
水波紋.gif - 實現(xiàn)代碼
CALayer * spreadLayer;
spreadLayer = [CALayer layer];
CGFloat diameter = 160; //擴散的大小
spreadLayer.bounds = CGRectMake(0,0, diameter, diameter);
spreadLayer.cornerRadius = diameter/2; //設置圓角變?yōu)閳A形
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;//動畫持續(xù)時間
//透明度動畫
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"];
