2010-04-28 3 views
1

Эй, у меня здесь небольшая проблема, и я не могу понять, что я делаю неправильно. Я пытаюсь оживить UIView вверх и вниз неоднократно. Когда я его запускаю, он идет правильно, а затем резервное копирование, а затем сразу же переходит в «окончательное» положение анимации. Код выглядит следующим образом:iPhone - UIView Анимация не правильная петля

UIImageView *guide = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]]; 
    guide.frame = CGRectMake(250, 80, 30, 30); 

    [self.view addSubview:guide]; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:2]; 
    [UIView setAnimationRepeatAutoreverses:YES]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 

    guide.frame = CGRectMake(250, 300, 30, 30); 

    [UIView setAnimationRepeatCount:10]; 
    [UIView commitAnimations]; 

Заранее благодарен!

ответ

0

Это «особенность», а не ошибка. Это действительно раздражает, но похоже, что если Apple не заявит об обратном, так это ожидание работы UIView Animations.

Смотрите этот ответ: setAnimationRepeatAutoreverses not behaved as I expected

0

Вы можете установить setAnimationDidStopSelector к пользовательской функции и в пользовательской функции вы можете создать больше анимации (даже рекурсивно). См. Мой ответ на другой вопрос here.

Обычно я определяю структуру анимации (AnimationPath in the example) для координации всей анимации (скажем, с помощью счетчика).

3

Это старый вопрос, но в случае, если кто-то смотрит на это, вы можете просто использовать дробное количество повторов для завершения в желаемом состоянии. Если вы анимируете от A до B и используете автоматическое обратное, каждый повтор будет выглядеть так: A -> B -> A. Так как вы хотите закончить B на последней анимации, а не A, просто сделайте это, чтобы сделать последнее повторить только на полпути (до B):

[UIView setAnimationRepeatCount:10.5]; 

Вот и все!

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