确定 UIImageView 正在显示它的哪个动画图像?

Posted

技术标签:

【中文标题】确定 UIImageView 正在显示它的哪个动画图像?【英文标题】:Determine which of its animationImages a UIImageView is displaying? 【发布时间】:2013-07-25 03:20:49 【问题描述】:

有没有办法找出 UIImage 在其动画的哪一帧上?当你启动它时,你给它一个动画图像数组,所以它显然必须将当前图像的索引存储在某个地方。你知道我怎么能找到这个吗?另外,有没有办法告诉 UIImageView 从哪一帧开始动画?

【问题讨论】:

【参考方案1】:

在类转储 UIKit 后,我​​既找不到文档中的属性,也找不到可疑的 ivar 或私有方法,所以我能想到的最好的方法是:

NSDate *startDate; // instance variable

- (void)startAnimation

    startDate = [NSDate date];
    [imageView startAnimating];


- (int)currentImageIndex

    NSTimeInterval elapsed = -1 * [startDate timeIntervalSinceNow];
    int nFrames = imageView.animationImages.count;
    NSTimeInterval frameDuration = imageView.animationDuration / nFrames;
    int current = elapsed / frameDuration;
    return current % nFrames;

关于如何在特定图像处开始动画:使用NSMutableArray 存储图像,并旋转数组使其第一个元素是您要开始的图像,然后重新设置@987654324 @ 图像视图的属性。要旋转NSMutableArray,请参阅this question 的答案。

【讨论】:

以上是关于确定 UIImageView 正在显示它的哪个动画图像?的主要内容,如果未能解决你的问题,请参考以下文章

在 UIImageView 动画之后继续显示最后一张图片

子类化 UIImageView - 动画图像不显示或出现

带有 UIImageView 子视图的 UIButton 以显示动画图像

UIImageView 在动画期间显示相机以错误的方向拍摄的图像

改变 UIImageView 动画速度

当动画 UIImage 被分配两次时,UITableViewCell 中的 UIImageView 没有动画