iPhone SDK - 如何判断动画何时完成?

时间:2010-01-22 01:05:29

标签: iphone core-animation

我在触摸图像时开始动画放大,然后在释放图像时将其缩小到正常尺寸。通过使用setAnimationBeginsFromCurrentState:YES,如果你通过动画将手指抬起一部分,缩放效果会很好而且流畅。

然而,我想要做的是,如果你已经触摸图像足够长的时间以完成动画,则“锁定”较大的尺寸,但是如果你过早地释放它会让它恢复正常。

有没有办法判断当前是否有动画正在运行,或者特定动画是否已完成?

我想我可以用performSelector执行此操作:afterDelay:调用touchesStarted,延迟等于动画的长度,如果touchesEnded过早就取消它,但我无法想象这是最好的方法。 ..?

3 个答案:

答案 0 :(得分:13)

- (void)animateStuff {
    [UIView beginAnimations:@"animationName" context:nil];
    [UIView setAnimationDelegate:self];
    [self.view doWhatever];
    [UIView commitAnimations];
}

- (void)animationDidStop:(NSString *)animationID
                finished:(NSNumber *)finished
                 context:(void *)context
{
    if ([finished boolValue]) {
        NSLog(@"Animation Done!");
    }
}

答案 1 :(得分:1)

另一种可能性:

 [UIView animateWithDuration:0.3 animations:^{

      myView.transform = CGAffineTransformMakeRotation(M_PI);

 }completion:^(BOOL finished) {

      NSLog(@"Animation complete!");
 }];

答案 2 :(得分:0)

我认为“+(void)setAnimationDidStopSelector:(SEL)选择器”应该做你想要的。一旦动画完成,它将调用代理上的给定选择器。