iPhone:检测UIImageView图像序列动画结束的最佳方法

tas*_*oor 8 iphone objective-c uiimageview ios

我们知道UIImageView对图像序列动画有很好的支持.我们可以轻松地创建一个UIImage对象数组,设置animationImages属性,配置动画持续时间,重复计数等,然后只需触发.但似乎没有办法知道这个动画何时结束.

假设我有十张图像,然后我想用它们运行动画(重复计数= 1).当动画结束时,我想运行一些其他代码.知道动画结束的最佳方法是什么?

我已经明白我可以创建一个NSTimer并安排它在动画持续时间后触发.但是如果你需要很好的精度,你真的不能依赖计时器.

所以我的问题是,有没有更好的方法来知道UIImageView图像序列动画已经结束而不使用计时器?

代码是这样的

myImageView.animationImages = images; // images is a NSArray of UIImages
myImageView.animationDuration = 2.0;
myImageView.animationRepeatCount = 1;

[myImageView startAnimating]

Ben*_*tto 8

isAnimatingUIImageView上的属性应该NO在它完成动画时进行.但这不是一个正式的财产,所以你不能对它进行观察.你可以在一个细粒度的计时器(如CADisplayLinks)上进行轮询.

没有"动画完成"代表,如果这是你正在寻找的那种东西.时间可以根据图像的加载延迟等而变化,不,没有确切的方法可以准确地知道它何时完成.

UIImageView上的图像动画是一种方便,而不是重量级足以做严肃的动画工作.如果您需要那种精度,请考虑自己滚动.