我需要在简单的图库类型应用中加载大约20个高质量的图像(~3800x5800像素)。用户单击一个按钮,下一个图像将加载到UIImageView。
我目前使用[UIImage imageWithContentsOfFile:],在模拟器中加载每个图像大约需要6秒钟:(
如果我使用[UIImage imageNamed:],加载时需要更长的时间,但如果用户希望再次看到相同的图像,则缓存图像意味着更快。但是,以后所有缓存都会导致我的应用程序崩溃,这可能会导致内存问题。
我想知道加载这些的最佳做法是什么?我正在尝试尽可能减少图像文件的大小,但我真的需要它们才能成为应用程序的高质量图像(可缩放等)。
感谢您的任何建议
[编辑]
嘿,伙计们,
谢谢你的建议。该项目的规格已经发生了一些变化。现在,除了显示图像之外,它们首先必须放大到特定的位置,当用户点击下一个时,它会缩小然后显示下一个图像。所以我不确定拟议的解决方案是否合适?
答案 0 :(得分:3)
Apple's docs建议您不要尝试加载大于1024x1024的单张图片。您应该考虑使用CATiledLayer代替,根据需要加载图像片段。
答案 1 :(得分:1)
您可以查看此Apple示例: http://developer.apple.com/library/ios/#samplecode/PhotoScroller/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010080
它显示了如何加载大图像,在瓷砖中将它们分解为不同的缩放级别。
答案 2 :(得分:0)
您无法在任何给定时间看到所有这些像素,因此无需全部加载它们。加载较低分辨率的副本(“大缩略图”)以查看完整的图像,然后在用户放大后选择子图块,可能是2个或更多不同的分辨率集。
CATiledLayer API可能能够为您处理后者。