【发布时间】:2009-12-09 08:31:29
【问题描述】:
我有一系列需要在短时间内显示的图像(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的重复定时器)
但我发现当我第一次调用图像时,它非常滞后。除了第一个外观,其他外观都没有问题。
是否与预加载图像有关?还是我的图片文件太大?
【问题讨论】:
-
我认为这对您的特定问题没有帮助,但是将变量声明移到 for 循环之外可能不是一个坏主意。我不知道 gcc 是否足够聪明来解决这个问题,但是看起来相当痛苦。
标签: iphone calayer preloading