Animar dibujar el relleno de un CAShapeLayer

He estado jugando con dibujar un path usando un CAShapeLayer como se describe en este excelente artículo, http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer , pero estoy preguntándome si hay una manera de animar el relleno de una capa.

Por ejemplo, tengo un text que quiero dibujar en la pantalla, pero solo he podido dibujar el trazo del text y no el relleno. Otro ejemplo, tengo una forma de estrella que me gustaría animar que se rellenara.

¿Es posible usar un CAShapeLayer u otro object?

¡Gracias!

Es la mayoría del time el mismo código, solo tiene que establecer diferentes valores para fromValue y toValue de CABasicAnimation . CABasicAnimation 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; } 

El CABasicAnimation devuelto solo tiene que agregarse a un CAShapeLayer :

 [_myShapeLayer addAnimation:returnedAnimation forKey:@"animKey"] 

Sí, es posible.

CAShapeLayers tiene una propiedad fillColor que es animable.

Funciona de la misma manera que cambiando el estilo strokeEnd / strokeStart como ya lo hizo con su animation.