iPhone : Best way to detect the end of UIImageView image sequence animation

标签 iphone ios objective-c uiimageview

我们知道 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/

相关文章:

ios - Ionic cordova 应用程序适用于所有浏览器和 IOS 9,但不再适用于 IOS 8 [无错误地卡住]

objective-c - iOS 应用程序上的自定义字体 - 在模拟器中工作但不在 iPad 中工作

iphone - 如何测试应用程序的加载时间?

iphone - 如何将导航栏(没有导航 Controller )和搜索栏添加到 TableView

iphone - 如何直接从我的应用程序启动 Appstore 应用程序

iphone - 将 uisearchDisplayController TableView 样式更改为分组?

ios - UIImageWriteToSavedPhotosAlbum 选择器语法问题

iphone - UIActionSheet 取消按钮不关闭操作表

ios - 全局二级索引的 DynamoDB 查询 BETWEEN 不起作用(ObjectiveC)

ios - 重用 UITableViewCell 时无法重置 UILabel attributeText