drawRect的问题和巨大的视图

时间:2011-05-20 00:27:47

标签: iphone drawing drawrect

我有一个覆盖CATiledlayer的视图。该视图位于10,000x8,000附近的某处

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

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

2 个答案:

答案 0 :(得分:3)

10000 * 8000是一个巨大的观点 - 你出现内存问题并不奇怪。它可以在模拟器中工作,因为你的计算机上有更多的内存,但是为了让你了解最坏的情况,这个大小的完整RGBA缓冲区空间将占用10000 * 8000 * 4字节,或大约305MB! / p>

你的代码在方法中是什么样的?如果你想要一个看起来很重要的东西,那么你可能不得不以不同的方式做事。在这种情况下,您的视图应该只是屏幕的大小(手机上的320 * 480),并且您创建一个代表您的世界的矩形(10000 * 8000)和另一个代表您的视图的矩形。然后根据它们在世界空间中相对于视图空间的位置绘制线条。

答案 1 :(得分:2)

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