一千萬個為什麽

搜索

如何從磁盤讀取圖像並阻塞直到讀取?


我正在從磁盤上加載5張圖片,但我希望我讀到的第一張圖片盡快顯示出來。現在我做

UIImage *img = [UIImage imageWithContentsOfFile:path];

在for循環中,但是因為imageWithContentsOfFile:path沒有阻塞所有5個圖像,所以在第一個圖像出現之前最終會從磁盤讀取(因為它們都在耗盡I/O)。我通過加載一個來確認這一點,它比我加載所有5更快地出現在屏幕上。

我想加載第一張圖像和,直到它完全讀取並顯示,然後加載下一張4或加載第一張圖像並在加載下一張4之前收到通知,但我不能找出一種方法來做到這一點。沒有用於數據或圖像塊的'WithContentsOfFile'方法,並且它們不通知或具有委托方法。有什麽建議麽?

謝謝

最佳答案

您可以首先將圖像文件加載到NSData對象中,然後使用以下數據初始化圖像,以確保從磁盤完全加載圖像:

NSError *err = nil;
NSData *data [NSData dataWithContentsOfFile:path 
                                    options:NSDataReadingUncached
                                      error:&err];
UIImage *img = [UIImage imageWithData:data];

克勞斯

轉載註明原文: 如何從磁盤讀取圖像並阻塞直到讀取?

猜你喜歡