我们知道 UIImageView
对图像序列动画有很好的支持。我们可以轻松地创建一个 UIImage 对象数组,设置 animationImages
属性,配置动画持续时间,重复次数等,然后就可以触发了。但是似乎没有办法知道这个动画什么时候结束。
假设我有十张图片,然后我想用它们运行一个动画(重复计数 = 1)。当动画结束时,我想运行一些其他代码。知道动画已经结束的最佳方式是什么?
我已经知道我可以创建一个 NSTimer
并安排它在动画持续时间后触发。但是如果你需要很好的精度,你真的不能依赖计时器。
所以我的问题是,有没有更好的方法可以在不使用计时器的情况下知道 UIImageView
图像序列动画已经结束?
代码是这样的
myImageView.animationImages = images; // images is a NSArray of UIImages myImageView.animationDuration = 2.0; myImageView.animationRepeatCount = 1; [myImageView startAnimating]
最佳答案
UIImageView 上的 isAnimating
属性在完成动画后应该变为 NO
。不过,它不是正式属性(property),因此您无法对其进行观察。您可以在细粒度计时器(如 CADisplayLink
的)上对其进行轮询。
如果您正在寻找这种东西,则没有“动画完成”委托(delegate)。时间可以根据图像的加载延迟等而变化,不,没有万无一失的方法可以准确知道何时完成。
UIImageView 上的图像动画很方便,而且不够重量级,无法用来做严肃的动画工作。如果您需要那种精度,请考虑自己动手。
关于iPhone : Best way to detect the end of UIImageView image sequence animation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770997/