[英]First time Image animation takes long time to animating
在我的应用程序中,有260张图像的动画 .jpg文件的尺寸为640 * 1136。我将所有图像加载到数组中,如下所示。
在按钮上单击
- (void)singButtonClick:(id)sender
{
[self initSingArray];
[self startAnimationWithImages:singArray duration:2];
}
它将分配初始化我的数组,并从资源文件夹中加载所有260张图像
self.imageArray = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil];
- (void)initSingArray
{
if (!singArray)
{
singArray=[[NSMutableArray alloc] init];
for(NSString *str in self.imageArray)
{
if([[str lastPathComponent] hasPrefix:@"Sing_"])
{
[singArray addObject:[UIImage imageNamed:[str lastPathComponent]]];
}
}
}
}
对于Image动画,仅使用该数组并将其传递给UIImageView
- (void)startAnimationWithImages:(NSMutableArray*)images duration:(NSTimeInterval)duration
{
[self startAnimationWithImages:images duration:duration repeatCount:1];
}
- (void)startAnimationWithImages:(NSMutableArray*)images duration:(NSTimeInterval)duration repeatCount:(int)repeatCount
{
if (self.gifImageView.isAnimating)
{
[self.gifImageView stopAnimating];
}
self.gifImageView.animationImages = nil;
self.gifImageView.animationImages = images; // Animated image array
self.gifImageView.animationDuration = duration; // Perform a full animation when
self.gifImageView.animationRepeatCount = repeatCount;// Animation number of repetitions
[self.gifImageView startAnimating];
}
但是在第一次点击按钮时,动画制作将花费很长时间。当图像数量较少时,效果很好。
图像的尺寸会产生问题吗?
请帮我解决。
注意 :我发现很多帖子都与此问题相关,但是没有一个可以帮助我解决此问题。
您必须执行此操作[self initSingArray];
在viewDidLoad
或其他位置,而不是在按钮上单击。 它会解决您的问题。 在您的情况下,原因是第一次创建图像阵列时需要花费时间。
在imageview-animation-getting-more-memory上查看我对相同问题的答案。 最重要的是,您永远不会使用animationImages方法和许多类似的图像来使您的应用程序正常工作。 您最好使用已经解决内存问题的现有解决方案,并提供一种避免在动画开始显示之前将所有图像数据解码到内存中的方法(这就是为什么开始动画如此缓慢的原因)。
经过大量的研发,最终我通过一些博客文章解决了这个问题。我的应用程序成功运行,没有崩溃的问题,响应速度很快。
而不是使用UIImageView进行动画播放请尝试使用此炉排教程Memory_usage_on_ios
希望此答案可以帮助某人为许多图像帧设置动画,而不会出现内存泄漏问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.