cómo animar arco/carrera segmento donut y cambio de longitud
necesito para animar arcos (aka segmentos de rosquilla) en los siguientes escenarios donde el arco mantiene un radio constante r al centro de círculo imaginario (el arco se sienta justo fuera del círculo).
1) Anime el ancho del trazo del arco de xa y, manteniendo un radio ry el ángulo alfa.
2) Anime el ángulo del arco de alfa a beta mientras mantiene un ancho y un radio de trazo constantes.
3) hacer 1 y 2 juntos, pero posiblemente con animaciones/temporizaciones independientes.
Esto es lo que tengo hasta ahora:
He implementado el arco dibujo como una vista personalizada que simplemente dibuja el arco con CGContextAddArc. Esto está bien para un arco estático pero no anima nada.
Además, sé cómo dibujar imágenes recortadas con cosas como [UIBezierPath addClip].
Esto último es interesante porque creo que para el escenario 1, puedo lograr el efecto deseado de dos maneras: seguir dibujando un arco y modificar tanto el trazo como el radio para mantener el mismo radio interno percibido (que soy no optimista, me temo que el radio "vibrará"), o dibujar un segmento de un círculo que crece en tamaño (tal vez simplemente modificando la escala con una transformación afín) y luego es recortado por una máscara circular estática.
Ahora, ¿cómo tomo todos estos conceptos y los selecciono en algún código de dibujo real? No necesito código real (aunque eso también estaría bien), pero más como un enfoque conceptual, como, ¿puedo hacer esto todo con un UIView con dibujo personalizado, o tenemos que hablar sobre animaciones de teclas personalizadas que entiendo involucrar a CALayers y tal. En otras palabras, ¿cuál es la arquitectura adecuada para hacer todo esto que sería más fácil de codificar y, al mismo tiempo, ser eficiente desde una perspectiva de composición para una animación fluida?
+1, ¡Esto sería mucho más simple que el tutorial al que me he vinculado! – jrturton
Gracias. Logré lo que quería al agregar un CAShapeLayer como subcapa a mi UIView personalizado, y luego animar sus propiedades con CABasicAnimation como sugieres. Para el agujero de la rosquilla, agregué una máscara de capa. – Jaanus
¡Hola!Estoy tratando de lograr lo mismo, y sería bueno ver algún código ... He tratado de implementar la sugerencia de David, pero no puedo animar el 'strokeEnd' ... Esto es lo que tengo: https : //gist.github.com/4073608 – Eric