我在寫一個應用程序,它使用您的手指繪製簡單的圖表。我有它的大部分工作,但現在我試圖優化其性能。當用戶快速揮動手指時,我無法捕捉足夠的觸摸事件來繪製平滑的路徑。爲iPhone SDK優化繪圖(帶手指觸摸)應用程序
這是我目前的做法:
1)我的子類一個UIView並添加了一個poroperty到CGLayer(被懶洋洋地創建,其大小與我UIView相同)。 2)我的UIView子類通過在實例變量中存儲當前觸摸點和最後一個觸摸點來響應觸摸事件。 3)我的視圖的setNeedsDisplay被調用,並且在繪製矩形中,執行以下操作: - 從前一個觸摸位置到當前觸摸位置繪製一條線到CGLayer - 一次繪製整個CGLayer到我的視圖上下文
的主要問題是,當用戶掃描快,我得到相對較少的觸摸事件,所以我在觸摸之間繪製線條很長,使得路徑看鋸齒狀不順利。
我的問題:
1)是否的drawRect(在我UIView子類)和我UIView子類我的觸摸事件處理程序被調用在同一個線程?即我可以不得不執行線程(一個在觸摸事件中,另一個在我的繪製矩形中)?
如果沒有 - 做觸摸事件被排隊時被調用的drawRect?我該如何提高性能 - 簡單地提高drawRect的性能?
如果是的話 - 我怎樣才能得到更多的觸摸事件發生,所以我可以得出一個平滑的路徑?
謝謝。
所以我的drawRect和我的觸摸事件處理程序都得到所謂的主線程上? 你是否建議每次觸摸事件發生時,我應該開始一個新的線程,並在該線程中做我的繪圖? – aloo 2009-07-14 17:19:10