2011-09-27 45 views
1

我正在使用核心繪圖(0.4)來呈現圖形,它工作正常。但是(特別是在iPad上)圖表可能需要一段時間才能呈現。我已經添加了一個UIActivityIndi​​catorView到圖表,當圖表開始繪製時顯示,但是我找不到任何可以用來停止微調的事件。核心情節顯示'正在加載'微調器

我已經嘗試過使用numberForPlot方法並檢測最後一個數據點是否被請求,但是這對於scatterGraph上的每一行都被稱爲多次,所以我不能輕鬆使用它。是否有任何圖形渲染的事件,我可以爲此掛鉤?

回答

0

如果你在做[graph reloadData]來更新圖表,你可以用你的指示燈開始/停止呼叫來包圍那個呼叫嗎?我認爲核心陰謀在主線程中做了一切。

+0

同樣的評論也適用於上述情況。 UI線程沒有時間來繪製我認爲的微調器。 –

+0

僅供參考,我的確對此進行了整理。我沒有在alertView上使用委託方法來表明它已經顯示,一旦我使用了這個,alertView就完全出現在圖表之前。謝謝你的幫助。 –

0

核心繪圖使用Core Animation進行所有渲染。單個圖形包含許多獨立渲染的CA層。 -reloadData只是告訴圖形在下次繪製時更新它的數據緩存,並告訴Core Animation它需要重畫。同樣,只包圍數據源調用只會捕獲渲染之前發生的數據緩存。你會錯過實際的繪圖時間,並且永遠不會知道Core Animation是否會在另一次重新渲染圖形,比如重新調整大小後。

如果您只關心渲染圖的時間而不關注圖的其他部分,則執行此操作的一種方法是將子類CPTScatterPlot並覆蓋-renderAsVectorInContext:方法。用您的活動指標代碼將呼叫列入super

+3

我還在爲此而苦苦掙扎。我猜是因爲所有的核心繪圖操作都在GUI線程上。即使我顯示「微調器」,然後調用reloadData然後停止微調器,直到圖形操作完成後微調器才顯示出來。我只是愚蠢的,有沒有辦法確保在開始圖形重新加載之前繪製微調框? –