2009-04-24 3 views
7

Чтобы сформулировать мой вопрос как можно проще, есть ли способ создать последовательность анимации ядра, повторяющуюся снова и снова, до остановки?Core Animation ... циклические анимации?

В частности, я создаю пользовательский класс, в котором я хочу использовать метод -start и -stop, который заставит его пульсировать. Написание кода анимации для импульса не проблема, скорее, как сделать его повторяющимся?

Заранее благодарим за любые ответы!

ответ

15

Согласно the documentation, вы делаете это путем создания анимации с чрезвычайно большим repeatCount (код Выдержки из документации я связан):

// 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; 

редактировать: ОП спросил, как остановить анимацию , Из next paragraph в документации:

Вы начинаете явную анимацию посылая addAnimation:forKey: сообщение к целевому слою, передавая анимацию и идентификатор в качестве параметров. После добавления в целевой слой явная анимация будет запускаться до завершения анимации, или удаляется со слоя. Идентификатор , используемый для добавления анимации к , также используется для того, чтобы остановить его на , ссылаясь на removeAnimationForKey:. Вы можете остановить все анимации для слоя на , отправив слой removeAllAnimations сообщение.

+3

В отличие от комментария в примере кода, который вы вставили, 1e100 не бесконечен - это всего лишь 10 ** 100. Константа INFINITY, определенная в math.h, была бы лучше. –

+0

Но если я это сделаю, как остановить анимацию по команде? – cemulate

+0

Ответил в ответ, поскольку в комментариях недостаточно места. –

Смежные вопросы