Проблема с анимацией UIView - выполнение одной и той же анимации более одного раза не работает - PullRequest
0 голосов
/ 20 мая 2011

Мне нужно перевернуть карту, а затем перевернуть ее обратно.Я написал код, чтобы сделать это без проблем.Проблема заключается в том, что пользователи могут переворачивать эту карту назад и вперед столько раз, сколько они хотят, и кажется, что эффект накапливается.Со второй попытки карта вращается как волчок.Я не совсем удивлен, так как кажется, что есть способ добавить анимацию, не совсем понятный из вида.Есть ли способ «переустановить» UIView анимации, которую я ранее зафиксировал?Есть ли способ перехватить его и использовать повторно, не совершая новый?Или я что-то упускаю очевидное?Это мой код:

if (self.flipped) {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
                           forView:self
                             cache:YES];
    [imageView removeFromSuperview];
    [UIView commitAnimations];
    self.flipped = NO;
} else {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:self
                             cache:YES];
    [self addSubview:imageView];
    [UIView commitAnimations];
    self.flipped = YES;
}

Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Чтобы отменить все текущие анимации:

#import <QuartzCore/QuartzCore.h>

...

[view.layer removeAllAnimations];

Чтобы запустить новую анимацию, которая убивает существующие анимации, если таковые имеются, и начинает движение с того места, где в данный момент находится вид, - я думаю, это то, что вы хотите:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];

... and the rest of it ...

[UIView commitAnimations];

Надеюсь, один из них решит вашу проблему.

0 голосов
/ 20 мая 2011

Каким бы ни было ваше «я», поместите его в содержащий представление, называемое foo, а затем измените строку setAnimation ... на следующую:

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                       forView:foo
                         cache:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...