要扩展主题,......不会崩溃?我从UIImageViews中的照片库加载了大约15个完整大小的图像,并且内存警告失败并最终导致应用程序崩溃。这些图像的范围从大约250KB到400KB。 UIImageViews设置为宽高比。
照片库似乎加载了较小文件大小的图像版本,而不仅仅是调整其比例。有没有人知道它是如何能够显示这么多而不会因内存使用而崩溃的?
答案 0 :(得分:3)
正如您所说,您需要调整图像大小。调整图像大小并不像你想象的那么明显,但并不难:
// h = new height; w = new width; image = UIImage
CGSize newSize;
newSize.height = h;
newSize.width = w;
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0, 0, w, h)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
当然,您需要确保释放旧图像,以便回收内存。最好的方法可能是使用+imageWithContentsOfFile:
,因为它明确地不缓存。
答案 1 :(得分:2)
照片库可以执行许多内存优化:
为了让您的生活更轻松,我建议您使用the Facebook three20 library,其中包括照片查看器:
TTPhotoViewController模仿Apple的照片应用程序,其所有的轻弹n'捏捏喜悦。您可以提供自己的“照片源”,它与UITableView使用的数据源类似。与Apple的照片应用不同,它不仅限于本地存储的照片。您的照片可以从网络加载,并且可以逐步加载长长的照片列表。
项目有一个很好的示例代码,所以你可以从那里开始。顺便说一句,这与Facebook iPhone应用程序中使用的视图相同。这是它的样子: