照片库如何显示如此多的图像?

时间:2010-01-02 16:55:41

标签: iphone cocoa-touch uiimageview uiimage

要扩展主题,......不会崩溃?我从UIImageViews中的照片库加载了大约15个完整大小的图像,并且内存警告失败并最终导致应用程序崩溃。这些图像的范围从大约250KB到400KB。 UIImageViews设置为宽高比。

照片库似乎加载了较小文件大小的图像版本,而不仅仅是调整其比例。有没有人知道它是如何能够显示这么多而不会因内存使用而崩溃的?

2 个答案:

答案 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)

照片库可以执行许多内存优化:

  1. 加载照片的缩略图,以显示为图库的一部分
  2. 现在只为正在显示的照片加载缩略图(例如,不是下一页中的照片)
  3. 只在实际需要时加载大图像。
  4. ...
  5. 为了让您的生活更轻松,我建议您使用the Facebook three20 library,其中包括照片查看器:

      

    TTPhotoViewController模仿Apple的照片应用程序,其所有的轻弹n'捏捏喜悦。您可以提供自己的“照片源”,它与UITableView使用的数据源类似。与Apple的照片应用不同,它不仅限于本地存储的照片。您的照片可以从网络加载,并且可以逐步加载长长的照片列表。

    项目有一个很好的示例代码,所以你可以从那里开始。顺便说一句,这与Facebook iPhone应用程序中使用的视图相同。这是它的样子:

    alt text