навскинду два варианта сразу приходят на ум:
1. реализовать свою view которая будет отображать список картинок по очереди и при этом не сразу загружать их все, а нужные подгружать когда нужно, а просмотренные выгружать из памяти
2. собрать это в видос и запустить его на заднем плане
я сделал бы первый вариант, он гибче. в первом варианте ничего не надо дополнительно собирать если кол-во кадров и/или сами кадры изменятся
//как-то так должен выглядеть MyImagesView.m файл
@interface MyImagesView ()
@property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, assign) int currentImage;
@property (nonatomic, assign) int totalImages;
@end
@implementation
/*
* этот метод надо вызывать в таймере. обязательно в Main Thread
*/
- (void)showNextImage
{
assert([NSThread isMainThread] == YES);
self.currentImage ++;
if (self.currentImage == self.totalImages)
{
// что бы отображать картинки циклически
self.currentImage = 0;
}
UIImageView *newImageView = [[UIImageView alloc] initWithFrame:self.bounds];
newImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_name%i.png", self.currentImage]];
[self.imageView removeFromSuperview]; // убираем прирыдущий кадр из view-хи (затираем сильную ссылку номер 1)
self.imageView = nil; // убираем сильную ссылку номер два (тут UIImageView должна выгрузиться из памяти, а с ней и UIImage)
[self addSubview:newImageView]; // закидываем новый кадр во view-ху (создаём сильную ссылку номер 1)
self.imageView = newImageView; // сохраняем ссылку на новый кадр что бы иметь в следующем вызове метода showNextImage ссылку на предыдущий кадр (создаём сильную ссылку номер 2)
}
@end
UPD:
попробуйте заменить:
newImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_name%i.png", self.currentImage]];
на:
NSString *imageName = [NSString stringWithFormat:@"image_name%i", self.currentImage];
newImageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];