检查动画何时停止

时间:2012-05-03 15:47:16

标签: objective-c ios animation uiimageview

我正在研究一个简单的UIImageView动画。基本上我从0-9得到了一堆图像编号,我使用这段代码为它们制作动画。

myAnimation.animationImages = myArray;
myAnimation.animationDuration = 0.7;
myAnimation.animationRepeatCount = 12;
[myAnimation startAnimating];

这里myArray是一个uiimages数组,即0.png,1.png等。

一切都很好,它的动画效果很好。我需要知道的是我什么时候知道动画何时停止?我可以使用NSTimer,但为此我需要一个秒表来检查动画的开始和停止时间。有没有更好的方法,这意味着有什么方法我可以找到UIImageView停止动画?

我看了这个帖子作为参考。

UIImageView startAnimating: How do you get it to stop on the last image in the series?

3 个答案:

答案 0 :(得分:4)

使用animationDidStopSelector。这将在动画完成时触发:

[UIView setAnimationDidStopSelector:@selector(someMethod:finished:context:)];

然后实现选择器:

- (void)someMethod:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context {

}

答案 1 :(得分:1)

是的,有比使用NSTimers更好的方法。如果您使用的是iOS 4或更高版本,则最好开始使用块动画。试试这个

 [UIView animateWithDuration:(your duration) delay:(your delay) options:UIViewAnimationCurveEaseInOut animations:^{

        // here you write the animations you want


    } completion:^(BOOL finished) {
        //anything that should happen after the animations are over


    }];

编辑: oops我认为我错误地读了你的问题。在UIImageView动画的情况下,我想不出比使用NSTimers或预定事件更好的方法

答案 2 :(得分:0)

你也可以试试这个:

[self performSelector:@selector(animationDone) withObject:nil afterDelay:2.0];