2009-04-24 20 views
7

Para expresar mi pregunta lo más simple posible, ¿hay alguna manera de crear una secuencia de animación central para repetirla una y otra vez hasta que pare?Core Animation ... animaciones cíclicas?

Específicamente, estoy haciendo una clase personalizada que quiero tener un método -start y -stop que hará que pulse. Escribir el código de animación para el pulso no es el problema, más bien, ¿cómo hacerlo repetitivo?

¡Gracias de antemano por cualquier respuesta!

Respuesta

15

Según the documentation, lo hace mediante la creación de una animación con una cantidad extremadamente grande repeatCount (código extraído de la documentación que he vinculado a):

// create the animation that will handle the pulsing. 
CABasicAnimation* pulseAnimation = [CABasicAnimation animation]; 

// over a one second duration, and run an infinite 
// number of times 
pulseAnimation.duration = 1.0; 
pulseAnimation.repeatCount = HUGE_VALF; 

// we want it to fade on, and fade off, so it needs to 
// automatically autoreverse.. this causes the intensity 
// input to go from 0 to 1 to 0 
pulseAnimation.autoreverses = YES; 

edición: le pide al OP cómo detener la animación . Desde el next paragraph en la documentación:

Se comienza una animación explícita por el envío de un mensaje addAnimation:forKey: a la capa de destino, pasando por el animación y un identificador como parámetros. Una vez agregado a la capa de destino, la animación explícita se ejecutará en hasta que finalice la animación o se elimine de la capa. El identificador utilizado para agregar una animación a también se usa para detenerlo mediante invocando removeAnimationForKey:. Usted puede detener todas las animaciones para una capa por enviando a la capa un mensaje removeAllAnimations.

+3

Contrariamente al comentario en la muestra de código que pegó, 1e100 no es infinito, es solo 10 ** 100. La constante INFINITY, definida en math.h, sería mejor. –

+0

Pero si hago esto, ¿cómo detengo la animación en el comando? – cemulate

+0

Respondió en la respuesta ya que no hay espacio suficiente en los comentarios. –

Cuestiones relacionadas