2016-06-24 8 views
1

Ich benutze unten Code, um eine Pie Slice Schicht mit CAShapeLayer zu zeichnen.CAShapeLayer fillcolor arc animation funktioniert nicht

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

Aber Animation Teil funktioniert als Einblenden Ausblenden. Aber ich muss animieren arc animation.

Bitte helfen Sie mir.

Antwort

0

den Hub So animieren Sie diese Eigenschaften animieren sollten:

-strokeStart

-strokeEnd

Aus der Dokumentation:

mit der Eigenschaft strokeEnd In Kombination dieser Eigenschaft definiert die Subregion vom Weg zum Schlaganfall. Der Wert in dieser Eigenschaft gibt den relativen Punkt entlang des Pfads an, an dem mit dem Streichen begonnen werden soll, während die Eigenschaft strokeEnd den Endpunkt definiert. Ein Wert von 0.0 stellt den Anfang des Pfades dar, während ein Wert von 1.0 das Ende des Pfades darstellt. Werte dazwischen werden linear entlang der Pfadlänge interpretiert.

[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"]; 

Credits Rob Mayoff

+0

Vielen Dank für Ihre Wiedergabe. Können Sie mir bitte einen Beispielcode schicken? – Thukaram

+0

@Thukaram Aktualisierung – Andrea

Verwandte Themen