как остановить анимацию после использования beginAnimations? - PullRequest
3 голосов
/ 20 марта 2010

Я использую следующий код, чтобы выполнить прокрутку строк, но как остановить анимацию?

[UIView beginAnimations:@"ruucc" context:NULL];
[UIView setAnimationDuration:12.8f];  
[UIView setAnimationCurve:UIViewAnimationCurveLinear];  
[UIView setAnimationDelegate:self];  
[UIView setAnimationRepeatAutoreverses:NO];  
[UIView setAnimationRepeatCount:999999]; 

frame = label1.frame;
frame.origin.x = -12;
label1.frame = frame;
[UIView commitAnimations];  

1 Ответ

1 голос
/ 06 сентября 2011
- (void)doAnimation
{
    [UIView animateWithDuration:12.8f
                          delay: 0.0
                        options: UIViewAnimationCurveLinear
                     animations:^{
                         frame = label1.frame;
                         frame.origin.x = -12;
                         label1.frame = frame;
                     }
                     completion:^(BOOL finished){
                         if(keepAnimating) {
                             [self doAnimation];
                         }
                     }]; 
}

В заголовке:

BOOL keepAnimating;

Чтобы запустить анимацию:

keepAnimating = YES;
[self doAnimation];

Чтобы остановить анимацию:

keepAnimating = NO;

В этом решении используется блок-методы анимации на основе UIView.Что касается старого набора методов анимации ([UIView beginAnimations] и т. Д.), Ссылка на класс UIView гласит:

Использование методов в этом разделе не рекомендуется в iOS 4 и более поздних версиях.Вместо этого используйте методы анимации на основе блоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...