CAShapeLayer填充颜色弧动画不起作用

时间:2016-06-24 10:14:21

标签: ios uibezierpath cashapelayer

我使用下面的代码用CAShapeLayer绘制一个Pie切片层。

CGFloat endAngle = (M_PI*2/5)-M_PI_2;

CAShapeLayer *outerBorderCircle = [CAShapeLayer layer];
int outerradius = self.frame.size.width/2;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(outerradius, outerradius)];
[path addLineToPoint:CGPointMake(outerradius, self.outerCircleBorder)];
[path addArcWithCenter:CGPointMake(outerradius,outerradius) radius:outerradius-self.outerCircleBorder startAngle:-M_PI_2 endAngle:endAngle clockwise:YES];
[path closePath];
outerBorderCircle.path = path.CGPath;

outerBorderCircle.fillColor = [UIColor whiteColor].CGColor;
outerBorderCircle.strokeColor = self.borderShadowColor.CGColor;
outerBorderCircle.lineWidth = self.outerCircleBorder;
outerBorderCircle.lineJoin = kCALineJoinRound;
outerBorderCircle.zPosition = MAXFLOAT;

CABasicAnimation *startanimation = [CABasicAnimation animationWithKeyPath:@"fillColor"];
startanimation.removedOnCompletion = YES;
startanimation.fromValue = (id)[[UIColor clearColor] CGColor];
startanimation.toValue = (id)[[UIColor whiteColor] CGColor];
startanimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
startanimation.duration = 10.0;
[startanimation setFillMode:kCAFillModeBoth];

[outerBorderCircle addAnimation:startanimation forKey:@"fillColor"];

[self.layer addSublayer:outerBorderCircle];

但动画部分淡出淡出。但我需要动画弧形动画。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

要为笔画设置动画,您应该为这些属性设置动画:

-strokeStart

-strokeEnd

来自文档:

  

结合strokeEnd属性,此属性定义了   中风路径的次区域。此属性中的值表示   沿着路径开始抚摸的相对点   strokeEnd属性定义终点。值0.0表示   路径的开头,而值1.0表示结束   路径。中间的值沿路径线性解释   长度。   

<强> [UPDATE]

CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
drawAnimation.duration            = timeInSeconds;
drawAnimation.fromValue = [NSNumber numberWithFloat:startAngle];
drawAnimation.toValue   = [NSNumber numberWithFloat:endAngle];
drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[circle addAnimation:drawAnimation forKey:@"drawCircleAnimation"];

Rob Mayoff

的信用