簡單繪畫:
指法iPhone屏幕將臨時圖形繪製到UIView。這些臨時圖形在觸摸結束後被刪除,然後存儲到底層的UIView中。提高手指畫的性能
的過程很簡單:
1)觸摸啓動&移至>>
2)油漆在頂部的UIView臨時圖形>>
3)觸摸結束>>
4)將臨時圖形傳遞到底層UIView >>
5)底層UIView將臨時圖形添加到存儲圖形>>
6)標的的UIView重新把一切存儲的圖形>>
7)刪除頂部的UIView臨時圖形。
以這種方式,我可以在底層UIView上積累圖形,同時保持頂層UIView上臨時圖形的響應式繪製。
(旁註:每個「繪圖」是簡單地定製的一個NSArray「點」的對象,其只是NSObject的容器CGPoints和底層的UIView具有一個單獨的NSArray,其中存儲CGPoints這些NSArrays。)
問題是:
當大量的圖形積累在底層的UIView上時,需要花費時間將它全部繪製在屏幕上。在底層存儲圖形繪製完成之前,頂層UIView上的任何新圖形都不會顯示。因此,當許多圖形出現在屏幕上時,會有明顯的滯後。
問:
誰能想到在這裏提高性能的好辦法,以便有圖紙之間沒有noticable滯後時,也有很多在屏幕上的圖形?
不,我沒有使用NSValue來保存CGPoint。我分類了NSObject並給了它兩個成員:xCoord和yCoord,它們是CGPoints。實際上,在屏幕幾乎被圖形覆蓋之前,性能似乎並不是那麼糟糕。我不訪問存儲的圖形,直到用戶擡起他/她的手指(僅在中間的圖形中),此時我繪製存儲的所有內容......我保留點,以便我可以回溯並執行撤消操作需要。 C陣列會更快嗎? – RexOnRoids 2009-08-31 02:46:47
根據評論編輯答案。 – 2009-08-31 03:02:01