我需要在短时间内显示一系列图像(PNG序列)。共有31个PNG,每个文件大小约为45KB。我已经使用以下代码加载它们:
imgArray = [[NSMutableArray alloc] init];
for(int i = 0; i <= 30; i++) {
NSString * filename = [NSString stringWithFormat:@"img_000%.2d.png", i];
UIImage *temp = [UIImage imageNamed:filename];
[imgArray addObject:temp];
[temp release];
temp = nil;
}
我使用以下代码显示图像:
CGImageRef image = [(UIImage *)[imgArray objectAtIndex:imgFrame] CGImage];
imgLayer.contents = (id)image;
if(imgFrame < 29) {
imgFrame++;
} else {
imgFrame = 0;
imgLayer.hidden = TRUE;
[imgTimer invalidate];
}
其中imgLayer是CALayer
。 (imgTimer是一个间隔为0.03s的重复计时器)
但是我发现当我把图像叫出来时,它第一次非常迟钝。除了第一次出现外,其他外观都没有问题。
是否与预加载图像有关?或者我的图片文件大小太大了?
答案 0 :(得分:0)
如果没有分析数据,很难说出你的滞后的原因。但这里有一个可能有用的技巧:将所有图像加入一个大文件中。尽量使它成矩形(在你的情况下可能是6x6或4 * 8)。然后加载这个单个文件并裁剪出每个图像以进行显示(即创建一个图像以显示一个图块的大小,并将一个图块从大图像中复制到另一个图像中)。
答案 1 :(得分:0)
使用和显示图像时会加载图像。 如果您使用仪器中的时间分析器,您将遇到滞后的问题。如果你然后缩放到那个滞后并查看导致它的原因,你通常会看到“copyImageBlockSetPNG”是在“膨胀”之前花费时间的函数。
您必须找到的方法是创建图像并在需要之前强制加载它们。那显然是另一个故事。