2013-11-18 2 views
2

Я хочу использовать CABasicAnimation для переключения UILabel. Анимация будет повторяться навсегда и изменит текст UILabel между двумя разными значениями.Перевернув UILabel

- (void)animateLabel 
{ 
    [self.myLabel.layer addAdnimation:[self labelAnimation] forKey:@"flip"]; 
} 

- (CAAnimation*)labelAnimation 
{ 
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
    [animation setRepeatCount:NSIntegerMax]; 
    [animation setAutoreverses:YES]; 
    [animation setDuration:2.0]; 
    [animation setDelegate:self]; 
    CATransform3D transform = CATransform3DMakeRotation(M_PI_2, 1, 0, 0); 
    [animation setToValue:[NSValue valueWithCATransform3D:transform]]; 
    return animation; 
} 

Теперь я попытался использовать делегат, но метод делегирования только тогда, когда начинается анимация. Скорее, мне нужно знать, что метка завершает один цикл. Есть ли какой-либо метод удобства или способ сделать это с помощью CALayer или мне нужно использовать ссылку CADisplay или таймер? Я хотел бы поблагодарить вас за руку за помощь.

ответ

0

Нет, так вы должны делать это согласно the documentation.

Установка этого свойства на HUGE_VALF вызовет повторение анимации навсегда.

+1

Ну, это уже повторяется навсегда. Вы видите, что я использую NSIntegerMax. Итак, что не так с кодом выше? – Sandeep

2

Чтобы получить уведомление о каждом цикле, установитеRepeatsCount в 1. Затем вы получите уведомление в делетете делегирование анимацииDidStop: завершено. Затем вы просто добавите ту же самую анимацию.

- (void)animateLabel 
{ 
    [self.myLabel.layer addAdnimation:[self labelAnimation] forKey:@"flip"]; 
} 

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    [self animateLabel]; 
    // do other stuff 
} 

- (CAAnimation*)labelAnimation 
{ 
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
    [animation setRepeatCount:1]; 
    [animation setAutoreverses:YES]; 
    [animation setDuration:2.0]; 
    [animation setDelegate:self]; 
     CATransform3D transform = CATransform3DMakeRotation(M_PI_2, 1, 0, 0); 
    [animation setToValue:[NSValue valueWithCATransform3D:transform]]; 
     return animation; 
    } 
+0

@ insane-36 сделал этот ответ, помог вам решить проблему? если да, вы бы так любезны принять его? –

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