预加载大图像

时间:2012-02-27 03:53:29

标签: iphone objective-c uiimageview

我的图像尺寸为5534×3803,尺寸为2.4mb。 UIView引用了以下说明:

  

“在iOS 3.0及更高版本中,视图不再受限于此最大值   大小,但仍然受到他们消耗的内存量的限制。“

当图像加载时,它会滞后半秒,然后滑入。图像位于UIDmageView中,位于1024x704,但是为了我的应用,可以放大到这个尺寸的4倍。

您是否可以在AppDelegate中预加载图像?还是有另一种方法可以解决这么大的图像吗?

由于

编辑:缩放是通过UIPinchGestureRecognizer完成的,并根据图像的中心点进行放大和缩放(缩放x4 - x1)。放大时没有平移图像。

1 个答案:

答案 0 :(得分:2)

就个人而言,我会尝试编写一个基于图块的系统(想想谷歌地图),将你的大图像切成一个小图像网格,以避免将这个巨大的图像同时加载到RAM中。我真的不知道你的用户与这个图像的交互是什么,或者图像是否正在改变或烘焙到你的项目中,但我认为你可以让用户滚动,因为该图像比任何iOS屏幕都大。使用基于图块的系统,您只能加载屏幕上的图像。 CATiledLayer是一个Apple类,用于做这样的事情。这可能是你想要研究的内容。

有关不同的方法,请参阅this StackOverflow question。接受的答案使用Apple的示例PhotoScroller项目中的代码,该项目可能适合您的需求并使用CATiledLayer。

ScrollViewSuite Apple代码也可能会开始运行(请查看平铺代码)。