我对自己比较满意。我使用了 AppDelegate 技术,它运行良好。我在 AppDelegate 中声明了一个 UIImageView 属性,然后将图像代码添加到它的 getter:
- (UIImageView *)backgroundImageView {
if (!_backgroundImageView) {
NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:150];
for (int imageNum = 0; imageNum < 150; imageNum++) {
[tempArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"image_00%03i.png",imageNum]]];
}
_backgroundImageView = [[UIImageView alloc] initWithImage:[UIImage animatedImageWithImages:tempArray duration:4.0]];
}
return _backgroundImageView;
}
这也允许我杀死 applicationDidReceiveMemoryWarning 中的对象。
然后我创建了一个帮助类,我可以将它弹出到我所有的 UIViewController 类中:
+ (void)placeBackgroundImageUnderView:(UIView *)masterView {
myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
//Correct for shrinkage
appDelegate.backgroundImageView.frame = masterView.frame;
[masterView addSubview:appDelegate.backgroundImageView];
[masterView sendSubviewToBack:appDelegate.backgroundImageView];
}
这允许我在每个 viewDidLoad 方法中添加一行:
[HelperClass placeBackgroundImageUnderView:self.view];
问题是,仅使用 UIImage 就应该缓存整个内容并加快加载时间。但似乎不时需要重新加载图像 - 内存问题?因此,这允许我通过实例化对象一次并使用同一个对象来更好地控制它,同时还可以将该对象设置为 nil 以在需要时释放内存。
自从添加它以来,整个应用程序的加载速度要快得多。我添加了一个额外的加载屏幕,其中包含一个用于初始加载的活动指示器(也可以很好地工作),之后的一切都是即时的。