La mayor parte del tiempo es el mismo código, solo tiene que establecer diferentes valores para fromValue
y toValue
de su CABasicAnimation
. He creado una categoría que me devuelve un CABasicAnimation
:
Animación para StrokeEnd
+ (CABasicAnimation *)animStrokeEndWithDuration:(CGFloat)dur
delegate:(id)target{
CABasicAnimation *animLine =
[CABasicAnimation animationWithKeyPath:@"strokeEnd"];
[animLine setDuration:dur];
[animLine setFromValue:[NSNumber numberWithFloat:0.0f]];
[animLine setToValue:[NSNumber numberWithFloat:1.0f]];
[animLine setRemovedOnCompletion:NO];
[animLine setFillMode:kCAFillModeBoth];
[animLine setDelegate:target];
[animLine setTimingFunction:
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
return animLine;
}
Animación para fillColor
+ (CABasicAnimation *)animFillColorWithDur:(CGFloat)dur
startCol:(UIColor *)start
endColor:(UIColor *)end
delegate:(id)target{
CABasicAnimation *animFill =
[CABasicAnimation animationWithKeyPath:@"fillColor"];
[animFill setDuration:dur];
[animFill setFromValue:(id)start.CGColor];
[animFill setToValue:(id)end.CGColor];
[animFill setRemovedOnCompletion:NO];
[animFill setDelegate:target];
[animFill setFillMode:kCAFillModeBoth];
return animFill;
}
La regresado CABasicAnimation
sólo tiene que ser añadido a un CAShapeLayer
:
[_myShapeLayer addAnimation:returnedAnimation forKey:@"animKey"]
¿Qué tipo de animación tienes en mente? Movimiento de movimiento? ¿Llenando desde abajo hacia arriba o de izquierda a derecha? ¿Color cruzado? –