0

我需要翻转一张卡片,然后将其翻转回来。我已经编写了代码来毫无困难地做到这一点。麻烦来了,因为用户可以随意来回翻转这张卡,而且似乎效果是累积的。在第二次尝试时,卡片像陀螺一样旋转。我并不完全感到惊讶,因为似乎只有一种添加动画的方法,从视图中看不清楚。有没有办法“重新设置”我之前提交的任何动画的 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;
}

谢谢阅读。

4

2 回答 2

1

要取消所有正在进行的动画:

#import <QuartzCore/QuartzCore.h>

...

[view.layer removeAllAnimations];

要开始一个新的动画,它会杀死现有的动画(如果有的话),并从当前视图的任何位置开始移动——我认为这就是你想要的:

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

... and the rest of it ...

[UIView commitAnimations];

希望其中之一可以解决您的问题。

于 2011-05-20T15:51:54.583 回答
0

无论您的“自我”是什么,将其放入名为 foo 的包含视图中,然后将您的 setAnimation... 行更改为:

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                       forView:foo
                         cache:YES];
于 2011-05-20T15:48:38.377 回答