Intento animar el dibujo de un UIBeizerPath (en mi ejemplo, un triángulo) en una subclase de UIView. Sin embargo, la subvista completa está animando en lugar de la forma.Cómo animar a CoreGraphics Dibujo de forma mediante CAKeyframeAnimation
¿Hay algo que me falta con la animación?
- (void)drawRect:(CGRect)rect {
CAShapeLayer *drawLayer = [CAShapeLayer layer];
drawLayer.frame = CGRectMake(0, 0, 100, 100);
drawLayer.strokeColor = [UIColor greenColor].CGColor;
drawLayer.lineWidth = 4.0;
[self.layer addSublayer:drawLayer];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0,0)];
[path addLineToPoint:CGPointMake(50,100)];
[path addLineToPoint:CGPointMake(100,0)];
[path closePath];
CGPoint center = [self convertPoint:self.center fromView:nil];
[path applyTransform:CGAffineTransformMakeTranslation(center.x, center.y)];
[[UIColor redColor] set];
[path fill];
[[UIColor blueColor] setStroke];
path.lineWidth = 3.0f;
[path stroke];
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.duration = 4.0f;
pathAnimation.path = path.CGPath;
pathAnimation.calculationMode = kCAAnimationLinear;
[drawLayer addAnimation:pathAnimation forKey:@"position"];
}
explicar exactamente lo que "animar el dibujo de un UIBezierPath" significa. ¿Desea dibujar los segmentos individuales, uno tras otro, o qué? –
@kurt sí Me gustaría animar el dibujo de cada punto para que el triángulo parezca estar animado –