我有一个带有一些大图像的tableView。我正在努力改善非常生涩的滚动性能。如果我使用ImageNamed加载图像,首先滚动是不稳定的,但在查看图像后,滚动是平滑的。我知道ImageNamed将图像添加到系统缓存中,所以我的问题是:是否可以在查看之前将图像预先加载到系统缓存中?
我尝试将以下代码添加到viewDidLoad方法中:
for (int i = 0; i < appDelegate.detailSectionsDelegateDict.count; i++) {
NSString *imageString = [NSString stringWithFormat:@"%@",[[appDelegate.detailSectionsDelegateDict objectAtIndex:i] objectForKey:@"MainTrackImage"]];
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
UIImage* theImage;
theImage = [UIImage imageNamed:imageString];
[imageCacheArray insertObject:theImage atIndex:i];
}
然后我在CellForRowAtIndexPath方法中从imageCacheArray中绘制正确的图像。但结果仍然是不稳定的滚动。
谢谢!
答案 0 :(得分:3)
获取带有图像(特别是大图像)的表格视图,以便顺利滚动并不像您想象的那么简单。使用[UIImage imageNamed:]加载一堆图像会很快导致跳板在您的应用程序开始超出内存容量时终止它。看看核心动画session videos from this year's WWDC,特别是会议425,“实践中的核心动画,第2部分”,它们涵盖了这个确切的主题并且做得非常好。如果您使用开发者帐户登录,也可以获取相关的源代码。