【发布时间】:2012-09-17 11:35:24
【问题描述】:
我正在开发一个应用程序,它需要使用分辨率高于 (2000 x 2000) 的图像来实现文本清晰度。
我有一个背景图像,我需要在其上显示具有相同分辨率的叠加图像。覆盖的数量是可变的,从 2 到 30。
由于使用 UIImage 加载图像,每个像素需要 4 字节,因此如果一张图像的分辨率为 3000x3000,则最多需要 34 MB 内存,2000 x 2000 需要 15 MB。
这就是问题所在,应用在 3GS 上加载 4-5 张图片后崩溃,在 iPhone 4 上加载 11-13 张图片后崩溃。
叠加层需要准确地放置在背景图像上。它们就像我们在谷歌地图交通叠加中看到的一样。这并不排除平铺,但会使任务相对复杂。
我应该如何处理这个问题?
【问题讨论】:
-
这个问题可以通过平铺或者重新考虑业务逻辑来解决。
-
是的,我想知道是否有一种方法可以在不平铺的情况下解决这个问题。
-
我假设您正在使用 MapKit,因为您同时提到了 Overlays 和 Google Maps。 MKOverlayView 是一个平铺视图,因此您可能不应该排除平铺。 MK 框架将在您的叠加视图上调用
drawMapRect:zoomScale:inContext:,作为最佳实践,您应该仅根据提供的边界矩形渲染到内容。 -
试试苹果的this,它在不影响分辨率的情况下缩小图像。
-
查看 WWDC2010 的 Advanced Scrollview 演示文稿 - 其中包括使用
UIScrollView平铺大图像。对于这种尺寸的图像,除了平铺之外真的别无选择。
标签: iphone ios ios5 iphone-4 iphone-3gs