2016-03-03 18 views
0

Profiler顯示CFRunLoopRun在20秒內被調用超過1000次,佔用85%,而我所做的只是滾動。 UITableView滾動看起來很遲鈍,我不知道是什麼導致了問題,並專門調用CFRunLoopRun。 我有一個自定義單元格,顯示圖像和一些標籤的UITableView。該圖像使用dispatch_async(dispatch_get_global_queue,..)加載到後臺線程中,所以我不認爲這是造成它的原因。 imageView有圓角和邊框,標籤也有圓角和背景顏色。 我很抱歉如此不明確,但有人遇到過類似的事情嗎?設置UIImageView後多次調用CFRunLoopRun

編輯1:

我在它看了一遍,發現CA渲染,佈局,ImageProvider佔據了大部分。這裏是調用樹 enter image description here

編輯2的圖片:

我已經想通了,設置ImageView的圖像調用上述方法。如果我評論這一行代碼,我設置圖像一切正常。 我現在的問題是:爲什麼這麼慢?我讀過一些評論,我必須首先壓縮的背景圖像,從而使UIImageView的不必做在主線程的工作,但我不能拿出一個很好的解決方案

+0

您能顯示更多信息,如實際堆棧跟蹤的截圖或文本嗎? – jtbandes

+0

上述Profiler堆棧中沒有任何內容表明CFRunLoopRun存在任何問題。所有的時間都在JPEG解碼中吃掉。如果不瞭解你如何編寫加載代碼和渲染代碼,我認爲我們不能特別幫助你。當你說你必須「首先在背景中壓縮圖像」時,你不清楚你在說什麼。你還沒有解釋什麼形象,你爲什麼要壓縮它,或者其他什麼。幾乎可以肯定的是,你在桌子單元格繪圖中只是做了太多的工作;或者你產生了太多的塊。但沒有一些提示,我們不能真正幫助 –

+0

我還沒有使用過多的分析器,所以對於錯誤的信息感到抱歉。 – Yannick

回答

0

Optimizing Image View Performance 的蘋果文檔稱圖像視圖會縮放圖像,並且性能上可能很昂貴。

用戶可以將圖像保存到數據庫。設置和抓取不會減慢速度。我的問題是,圖像視圖不得不在主線程上縮放圖像,這會損失性能。在設置圖像之前,我必須在後臺線程上縮放它,以便圖像視圖不必做太多工作。這幫助了我:iOS Swift: Resize image to 200x200pt/px

我希望我可以拯救每個人都有相同的問題一段時間。

相關問題