我有一个带有 UIView 的 UIScrollView,它又包含一个显示地图的 CATiledLayer。
我必须从一个可以非常深入地放大的概述开始。所以我用 4 种不同尺寸的地图制作了 4 张不同的图像(实际上是 PDF)(最大的有 5700 x 6700 像素)
我将最小的(概述)添加到 CATiledLayer,然后在某些缩放级别上交换图像。
到目前为止,这有点工作。
问题是,当我显示最大的地图(最近缩放)时,图块变得非常大,绘制它们需要很长时间(并且根据细节/偏差的水平,应用程序会产生内存警告崩溃)。
我尝试从最大的地图开始,并在地图首次显示时将缩放级别设置为最小值,但随后绘制概览需要很长时间,因为图块变得非常小(当我没有将其设置为最小缩放时,一切顺利)。
我在切换地图时尝试调整图块大小 - 但显然,这不起作用。
知道如何解决这个问题吗?;)
谢谢你的帮助...
编辑:
我现在正在尝试定义两个单独的 CATiledLayers,然后在达到某个缩放级别时交换它们 - 但这会使应用程序崩溃?
[myContentView.layer replaceSublayer: tiledLayer with: tiledLayerBig];
天啊... :)
编辑2:
好的 - 我让它工作了 - 或多或少。现在唯一发生的事情是,当我添加最大的图像时,CATiledLayer 的行为很奇怪。它可以正常工作一段时间,但是当绘制一定数量的图块时,我会收到内存警告并且应用程序最终会崩溃。我实际上希望这些不可见的瓷砖在离开视口时会被处理掉。这似乎没有发生,所以最终,所有的瓷砖都会被绘制出来,这对于 iPhone 内存来说似乎太多了...... :(
任何想法,如何解决这个问题?