iOS - удаление анимации с помощью [layer removeAllAnimations] - PullRequest
1 голос
/ 10 ноября 2011

У меня есть простая анимация для создания текста, которую я хочу остановить, когда я вызываю метод "labelDropped".Вот код анимации:

- (void)blinkAnimation:(NSString *)animationID finished:(BOOL)finished target:(UIView *)target
{   
float speedFloat = .8;

[UIView beginAnimations:animationID context:target];
[UIView setAnimationDuration:speedFloat];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(blinkAnimation:finished:target:)]; 
if([target alpha] == 1.0f)
    [target setAlpha:0.0f];
else
    [target setAlpha:1.0f];
[UIView commitAnimations];    
}

Этот метод вызывается в методе init моего представления следующим образом:

[self blinkAnimation:@"blinkAnimation" finished:YES target:infoLabel];

И, наконец, код, который я использую для остановки анимации,который не работает.Он вызывается из отдельного метода с именем "labelDropped":

[self.layer removeAllAnimations];

Я даже пытался: [infoLabel.layer removeAllAnimations];

... Но он также не работает.Спасибо за любую помощь.

1 Ответ

2 голосов
/ 10 ноября 2011

Полагаю, даже когда вы останавливаете анимацию, вызывается обработчик завершения.Таким образом, вы снова запускаете анимацию.

Проверьте значение готового параметра.Если закончено == НЕТ, не запускайте анимацию снова.Просто поместите это в начало blinkAnimation:finished:target:.

if (!finished) return;
...