1

我需要重绘不止一个画圈的动画,我用这段代码来动画绘图

CAShapeLayer *circle = [CAShapeLayer layer];
        // Make a circular shape
        circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 2.0*radius, 2.0*radius)
                                                 cornerRadius:radius].CGPath;
        // Center the shape in self.view
        circle.position = CGPointMake(CGRectGetMidX(_DrawingView.frame)-radius,
                                      CGRectGetMidY(_DrawingView.frame)-radius-0.66*radius);

        // Configure the apperence of the circle
        circle.fillColor = [UIColor clearColor].CGColor;
        circle.strokeColor = [UIColor redColor].CGColor;
        circle.lineWidth = 15;

        // Add to parent layer
        [_DrawingView.layer addSublayer:circle];

        // Configure animation
        CABasicAnimation *drawAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
        drawAnimation.duration            = 10.0; // "animate over 10 seconds or so.."
        drawAnimation.repeatCount         = 1.0;  // Animate only once..
        drawAnimation.removedOnCompletion = NO;   // Remain stroked after the animation..

        // Animate from no part of the stroke being drawn to the entire stroke being drawn
        drawAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
        drawAnimation.toValue   = [NSNumber numberWithFloat:1.0f];

        // Experiment with timing to get the appearence to look the way you want
        drawAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

        // Add the animation to the circle
        [circle addAnimation:drawAnimation forKey:@"drawCircleAnimation"];

我需要删除动画重新绘制它,我试过这个

[_DrawingView.layer removeAnimationForKey:@"drawCircleAnimation"];

但它不起作用,所以我怎样才能从图层中删除动画?

4

1 回答 1

1

弄清楚了 !

我添加了circle.name=@"circle"; 然后当按下按钮时我检查图层名称并将其删除

for (CALayer *layer in _DrawingView.layer.sublayers) {
           if ([layer.name isEqualToString:@"circle"]) {
               [layer removeFromSuperlayer];
               break;
           }
       }
于 2013-06-26T15:53:26.237 回答