Анимация в полете в анимационных блоках - PullRequest
0 голосов
/ 29 июля 2011

Я анимирую пользовательский UIView с использованием блоков анимации:

- (void)animateProgress
{
    [UIView animateWithDuration:animationDuration
                              delay:0.0
                            options: UIViewAnimationCurveLinear | UIViewAnimationOptionBeginFromCurrentState
                         animations:^(void) {
                             midImageView.frame = CGRectMake(midImageView.frame.origin.x, midImageView.frame.origin.y, (elapsedTime / endTime) * (bodyImageView.frame.size.width / 10 - MID_IMAGE_OFFSET_X), midImageView.frame.size.height);
                          } 
}

-animateProgress() вызывается повторно из объекта NSTimer.

Проблема в плавных переходах от анимации в полете. Я установил флаг UIViewAnimationOptionBeginFromCurrentState, но текущая анимация плавно не переходит к следующей - текущей анимации разрешается завершиться, а затем начинается следующая - вместо того, чтобы плавно объединить их вместе.

Меня озадачивает то, что нет проблем, когда я не использую блоки в стиле Obj-C:

- (void)animateProgress
{
        [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:5.0];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];  
    midImageView.frame = CGRectMake(midImageView.frame.origin.x, midImageView.frame.origin.y, (elapsedTime / endTime) * (bodyImageView.frame.size.width / 10 - MID_IMAGE_OFFSET_X), midImageView.frame.size.height);
    [UIView commitAnimations];
}

Это отлично работает. Почему не работает, когда я использую блоки?

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