在这个主题上延伸,...without崩溃?我从UIImageViews的图片库加载了大约15张全尺寸的图片,并得到内存不足的警告,最终应用程序崩溃。这些图像的大小从250KB到400KB不等。UIImageViews被设置为纵横比匹配。
图片库似乎加载了文件大小较小的图像版本,而不仅仅是调整其比例。有没有人知道它是如何在不因内存使用而崩溃的情况下显示这么多内容的?
发布于 2010-01-03 01:06:39
正如您所说,您需要调整图像的大小。调整图像的大小并不像你想象的那么明显,但这并不难:
// 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:,因为它不显式地缓存。
发布于 2010-01-03 01:06:14
图片库执行了许多内存优化,可能是:
时加载大图像
为了让你的生活更轻松,我推荐使用the Facebook three20 library,它包括一个照片查看器:
TTPhotoViewController模仿了苹果的照片应用程序,所有的轻拍和夹击都让人愉悦。您可以提供自己的“照片源”,其工作方式类似于UITableView使用的数据源。与苹果的Photos应用程序不同,它并不局限于本地存储的照片。您的照片可以从网络加载,并且可以增量加载长长的照片列表。
该项目有一个很好的示例代码,因此您可以从那里开始。顺便说一句,这和Facebook iPhone应用中使用的视图是一样的。下面是它的外观:

https://stackoverflow.com/questions/1992105
复制相似问题