我有一个iOS应用程序,它将一组图像和一个持续时间加载到数组中,然后有一个计时器来显示图像,如下所示:
- (void)fireTimer:(NSTimer *)theTimer
{
self.image = [frames objectAtIndex:currentFrame];
NSTimeInterval time = [[durations objectAtIndex:currentFrame] floatValue];
self.timer = [NSTimer scheduledTimerWithTimeInterval:time target:self selector:@selector(fireTimer:) userInfo:nil repeats:NO];
currentFrame++;
if (currentFrame >= [frames count])
{
currentFrame = 0;
[timer invalidate];
}
}
要开始动画,我调用fireTimer并循环显示图像,然后在处理完所有图像后,我调用[timer invalidate]停止动画。我不能使用startAnimation,因为每个图像需要不同的持续时间。
知道我不是在后台线程上执行此操作,因此动画不稳定,因为在对图像进行动画处理时发生了其他处理。
在后台对此进行动画处理的最佳方法是什么?我可以简单地将此调用放在fireTimer中吗?
我知道这可能不是在iOS上为图像设置动画的最佳方法,但是我现在不想对代码进行大量重构。
感谢您提供更好的解决方案的任何建议或示例!!!
我建议您使用UIImageView对图像进行动画处理:可以完成此任务。如您所说,如果某些图像需要比其他图像保留更长的时间,那么您可以多次显示它们。假设image2的显示时间比image1和image3的显示时间长两倍,只需animationImages
在UIImageView
like:上初始化数组即可@[image1, image2, image2, image3]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句