2013-05-09 103 views
0

我有一個UICollectionView與其中的一些圖像。在第一次向下滾動時加載圖像非常緩慢且不平坦。之後,當圖像加載時,它很好。UIcollectionView緩慢加載的圖像和滾動

我想問題是,圖像不會加載,直到細胞到達導致滯後的屏幕。我假設我需要做的是在圖像出現在屏幕上之前加載圖像。我不知道如何做到這一點,顯然尋找錯誤的東西,因爲我找不到任何答案。請有人指出我在正確的方向嗎?

這裏是一個加載圖像的代碼......這些圖像是在我的應用程序不會下載或任何東西。

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 
    static NSString *CellIdentifier = @"Cell"; 
    CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; 
    [[cell myImage]setImage:[UIImage imageNamed:[arrayOfImages objectAtIndex:indexPath.item]]]; 

    return cell; 
} 

謝謝!

+0

我猜你已經解決了這個,但我的情況下啓用了分頁被擰的滾動性能。我不需要它,所以只要我停用滾動速度非常快。 – 2013-09-10 14:49:28

+0

你一定已經解決了這個問題。我面臨同樣的問題,但不是圖像,我加載谷歌地圖。你可以分享這個解決方案,它可能有幫助嗎? + @JuanGonzález – iDilip 2015-07-07 15:07:18

回答

1

即使你不下載圖像,從永久存儲加載仍然在滾動過程中做的太慢了,因爲你已經發現。嘗試將+ imageNamed:call視爲下載,這會使代碼更加複雜,但修復響應性。其他問題(如Poor UICollectionView Scrolling Performance With UIImage)的答案可能會有所幫助。

5

看這個answer

添加這兩條線的離隊後

cell.layer.shouldRasterize = YES; 
cell.layer.rasterizationScale = [UIScreen mainScreen].scale; 
0

只是獲取內容並將其存儲在一個數組異步。並且只從委託方法內部進行分配部分。如果要一次顯示所有單元格,請放置一個示例縮略圖圖像,並在陣列獲取真實圖像時將其替換爲原始圖像。否則,每次數組獲取對象時,都可以重新加載集合視圖,以便集合視圖的單元數隨着圖像獲取而逐漸增加。