【发布时间】:2013-06-11 08:54:44
【问题描述】:
在我的应用程序中有 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]]];
}
}
}
}
对于图像动画,只需使用该数组并将其传递给 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];
}
但是当第一次点击按钮时,动画需要很长时间。当图像数量较少时,它会正常工作。
图像的尺寸会产生问题吗?
请帮我解决。
注意:我发现很多帖子与此问题相关,但没有一个可以帮助我解决此问题。
【问题讨论】:
-
好吧,所有这些图像都必须先加载到内存中才能显示。当您拥有较少的图像时,此过程所需的时间较短(显然)。您必须预加载图像。您说相关帖子对您的问题没有帮助 - 为什么?您不想预加载图片吗?
-
@Kreiri:是的,我预加载了所有图像,但是在单击按钮时,动画需要时间。还有一件事,当我单击另一个动画的下一个按钮(在另一个数组中加载其他图像)时,它会崩溃。
-
第二次崩溃肯定是因为你的内存不足。
-
@Kreiri :我认为会的。实际上我正在创建像会说话的汤姆这样的应用程序,所以我必须使用许多图像来制作动画。所以你能帮我解决一下吗?感谢您的回复
-
并非如此。你必须重新考虑你的设计。
标签: iphone objective-c ipad uiimageview uianimation