Анимация повторить - PullRequest
       2

Анимация повторить

2 голосов
/ 29 марта 2011

По какой-то причине я должен снова зафиксировать ту же анимацию.

- (void)startAnimation {
    NSLog(@"startAnimation called:shouldContinue = %u",shouldContinue);
    shouldContinue = YES;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:3];
    [UIView setAnimationRepeatCount:10];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop: finished: context:)];
    // bulabula...
    [UIView commitAnimations];
}

- (void)cancelAnimation {
    shouldContinue = NO;
}

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished    context:(void *)context {
    NSLog(@"animationDidStop called:shouldContinue = %u",shouldContinue);
    if (shouldContinue) {
        [self startAnimation];
    }
}

Но в результате текст "startAnimation named: shouldContinue = 1" печатается снова и снова быстро после одного раунда перед отменой анимацииЭто как будто while (YES) {print (,,,);} мертвая петля происходит.

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

Удалить эту строку из кода анимации. [UIView commitAnimations];Это будет повторять анимацию ...

0 голосов
/ 29 марта 2011

укажите этот код

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished    context:(void *)context
{
    NSLog(@"animationDidStop called:shouldContinue = %u",shouldContinue);

    if (shouldContinue!=NO) {
        [self startAnimation];
    }
}

, пожалуйста, сделайте, следует продолжать Ивару, если нет

если вы сделаете shouldПродолжить как ivar, то обязательно укажите

self.shouldContinue = NO;

и вы нигде не вызывали функцию отмены анимации, если нет, то в конце запускаемой функции, которая

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