2014-03-25 66 views
0

我正在寫一個應用程序,它使用iDevice相機拍攝照片並將其作爲PNG存儲在文件系統中。當啓動我的應用程序時,我加載了一個UICollectionView以及在文件系統上找到的圖像。性能 - UICollectionView加載時間非常緩慢

我面臨的問題是應用程序的加載時間(即使它只加載6張圖像大約4秒,這是不可接受的)我已經實現了GCD以在後臺線程上加載圖像(這使得UI快速)不過,我真正想要的應用與加載的圖像遠遠快開始

我的想法是:。

我懷疑initWithContentsOfFile正在年齡的負荷全尺寸圖像 我想過生成一個單獨的縮略圖當拍攝照片並加載時,請改爲。

最終,當我看着蘋果的照片應用程序,它加載「即時」,並有10張照片。

有沒有人有任何建議,我可以如何加載圖像更快或至少出現?

謝謝!

+0

你嘗試使用'imageNamed '方法? – Adithya

+0

這會加載更快嗎? – Spanners

+0

可能不在第一次加載,但'imageNamed'執行緩存,而後者不執行。 – Adithya

回答

0

嘗試在後臺線程這

加載圖像,並在主線程設置

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 

    UIImage *image = [UIImage imageWithContentsOfFile:frontPath]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.frontButton setBackgroundImage:image forState:UIControlStateNormal]; 
    }); 
}); 
+1

我在 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath方法中執行此操作,但視圖的初始加載需要很長時間。 – Spanners

+0

它仍然需要時間? – abhishekkharwar

+1

是的,因爲它的初始加載需要時間,而不是任何重新加載。 – Spanners

0

入住此示例代碼,並試圖得到一些想法從它 https://developer.apple.com/library/ios/samplecode/lazytableimages/introduction/intro.html

+0

今天早上看了一下,我看不出有哪些幫助?我錯過了什麼嗎?我知道我可以在單元格加載時放置佔位符圖像,但這不是Photo應用程序的功能。 – Spanners

+0

@Spanners:看到這個項目有助於從網絡上下載圖片,在你的案例中,圖片數據存儲在你的本地數據庫中,所以試着從中獲取一些想法..希望這對你有所幫助,否則請參考網絡上的一些懶惰圖片加載教程可能會幫助你。 –