绘图矩形和巨大的视图有问题



我有一个覆盖CATiledlayer的视图。视图在 10,000x8,000 附近

添加视图后,设备会发出内存警告,屏幕变黑。我已经将其缩小到 drawRect 方法,我的假设是这是因为视图太大了。它在iPhone模拟器中工作正常,但在设备本身上则不行。当我完全删除 drawRect 方法中的所有内容时,它仍然失败,但是当我删除整个 drawRect 方法时,它工作正常(但显然没有我的行)。

在drawRect方法中,我只是尝试在地图上的几个点之间画一条线。

10000*8000 是一个巨大的视图 - 你遇到内存问题也就不足为奇了。它将在模拟器中工作,因为您的计算机上有更多的内存,但为了让您了解最坏的情况,该大小的完整 RGBA 缓冲区空间将占用 10000*8000*4 字节,或大约 305MB!

您在方法中的代码是什么样的?如果你想让任何现实的东西都来自这么大的观点,你可能不得不做非常不同的事情。在这种情况下,您的视图应该只有屏幕的大小(手机上为 320*480),然后制作一个代表您的世界的矩形 (10000*8000) 和另一个代表您的视图的矩形。然后根据它们在世界空间中与视图空间的相对位置绘制线条。

使用另一个 CATiledLayer 来支持您的叠加视图。

最新更新