2011-09-28 33 views
1

在的UITableViewController中,UI凍結時調用此方法: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath的UITableView - 負載從一個NSBundle大UIImages而不阻塞主線程

在圖像被加載到的UITableViewCell。

cell.imageView.image = [UIImage imageWithContentsOfFile:@"filePath"];

文件被存儲在本地文件夾 - 這不是一個遠程調用。 據我所知,創建單元格時的圖片加載會導致主線程凍結,如果這是一個遠程調用,我將使用一個同步加載,但您將如何 爲本地文件做?

*圖像大約500k。

需要幫助。謝謝。

+0

來自包的500K圖像以單元形式顯示在表格視圖中?想到做拇指。這可能會縮小10倍。 –

+0

會做,它會改善,但它仍然會有一個小滯後tableview將重新加載單元格。我想要100%免費的用戶界面 - 如果我使用ASIHTTPRequest進行遠程圖像,我會得到相同的響應。 –

+0

有問題,你寫你從包中加載圖像。如果您不是爲所有表格加載圖像,而是僅加載現在需要顯示的圖像,則加載將接近立即提供的圖像具有合理的大小。但是如果你從網上加載圖片,你需要另一種方法。在後臺加載圖像,而不是未加載的圖像顯示佔位符。 –

回答

0

例如,製作單獨的線程,您將在其中加載圖像並在一些array中保存對它們的引用。當準備好所有圖像(或其中的一部分)時,您可以包含該消息。

table view controller你應該檢查image是否已經加載了該cell,如果它只是參考和設置cell.imageView.image與它。

+0

您如何知道本地文件已經完成加載? –

+0

當[[UIImage imageWithContentsOfFile:@「filePath」];'將返回引用,這將意味着本地文件被加載到內存。 – Nekto

+0

所以,你建議我添加一個間隔來檢查它?有沒有targer /動作,通知或我可以等待的東西? –

相關問題