我正在研究一个简单的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?
答案 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];