【问题标题】:Problem with drawRect and a huge viewdrawRect 和巨大视图的问题
【发布时间】:2011-05-20 00:27:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone drawing drawrect


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-16
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多