У меня есть последовательность изображений, необходимых для отображения за короткое время (последовательность PNG). Всего насчитывается 31 PNG, каждый из которых имеет размер файла около 45 КБ. Я уже загрузил их со следующими кодами:Предварительная загрузка изображений в приложении для iPhone?
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 достаточно, чтобы это исправить, но смотреть на это довольно болезненно. – KevinDTimm