2011-05-20 49 views
1

我有覆蓋CATiledlayer的視圖。視圖位於10,000x8,000附近的某處drawRect和巨大視圖的問題

添加視圖時,設備發出內存警告並且屏幕變黑。我已經縮小到drawRect方法,我的假設是,這是因爲視圖非常大。它在iPhone模擬器中工作正常,但不在設備本身。當我完全刪除drawRect方法內的所有東西時,它仍然失敗,但是當我刪除整個drawRect方法時,它工作正常(但顯然沒有我的線)。

在drawRect方法中,我只是試圖在地圖上的幾個點之間畫一條線。

回答

2

使用另一個CATiledLayer來支持覆蓋視圖。

+0

作品完美,謝謝。 – Brodie 2011-05-20 00:53:17

3

10000 * 8000是一個巨大的看法 - 毫無疑問,您會遇到內存問題。它可以在模擬器中工作,因爲您的計算機內存更多,但爲了讓您瞭解最糟糕的情況,這種尺寸的完整RGBA緩衝區空間將佔用10000 * 8000 * 4個字節或約305MB!

你在代碼裏面的代碼是什麼?如果你想要看起來很現實的任何東西,你可能會做得不一樣。在這種情況下,您的視圖應該只是屏幕的大小(手機上的320 * 480),並且製作一個代表您的世界的矩形(10000 * 8000)和另一個表示您的視圖的矩形。然後根據它們在世界空間中的相對位置繪製線條到視圖空間。