2011-03-23 40 views
2

我有他們的UIImageViews的幾個UIViews。當我第一次顯示的視圖時,在顯示之前有一個明顯的滯後(0.5秒左右)。再次顯示時,一切正常。UIImageView導致滯後第一次他們顯示

我設法通過添加所有視圖,然後刪除它們來解決這個問題。就像這樣:

[self performSelectorOnMainThread:@selector(addAndRemoveAllViews) 
         withObject:nil 
        waitUntilDone:NO]; 

功能遍歷其次是[view removeFromSuperview]各方意見,[addSubview:view]。這似乎觸發圖像加載而不顯示。

問題:

  1. 這一切都感覺像一個解決方法給我。有沒有更好的方法來處理這些類型的事情?
  2. 完成後是否可以得到回調或什麼東西?我想在完成後運行動畫。

更新:

映像從NSData創建這樣的:

[[UIImageView alloc] initWithImage:[UIImage imageWithData:rawData]]; 

回答

2

這似乎很可能的圖像比圖像查看大圖。如果可能,將其縮小到圖像視圖所需的大小。

初始延遲是從存儲中加載映像,之後您使用的是緩存版本,這就是爲什麼它更快。

+0

謝謝。查看關於NSData的圖像構建的最新消息。在這之後我需要對UIImageViews做些什麼嗎?你提到縮小UIImageView的大小? – 2011-03-23 16:19:12

+0

嗯,這很奇怪 - imageWithData不應該被緩存。另外,我在談論如何縮小圖像本身(以便加載時間更短),而不是縮小ImageView。您可能想要在加載圖像時嘗試使用TimeProfiler樂器,以查看系統是否在執行其他任何操作。 – 2011-03-23 16:26:14

+0

可能相關:我有時會在此期間收到內存警告。該視圖包含1024x768的多個圖像。但分配/記憶儀器只告訴我我正在使用8-10MB(iPad設備)。我不明白爲什麼當我只使用10MB內存時,會出現內存警告。這可能是相關的嗎? – 2011-03-23 16:38:13