2016-06-12 19 views
1

Es gibt eine UIImageView für jede Zelle der UICollectionView und ich muss sie laden, so dass Sie beim Scrollen durch die Sammlung werden sie ordnungsgemäß angezeigt und jedes Bild lädt auf seiner Zelle an seinem Indexpfad einmal.Lazy Loading UICollectionView Bilder

Jedes Bild wird von Kinvey heruntergeladen.

-Code jedes Bild zum Download:

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];  

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, cell.bounds.size.width, cell.bounds.size.width)]; 

[cell addSubview:imageView];  

    [KCSFileStore downloadData:@"id for item at index path"] completionBlock:^(NSArray *downloadedResources, NSError *error) { 

     if (error == nil) { 

      KCSFile* file = downloadedResources[0]; 

      dispatch_async(dispatch_get_main_queue(), ^(void){ 

       imageView.image = [UIImage imageWithData:file.data]; 
      }); 

      NSLog(@"Downloaded."); 

     } else { 

      NSLog(@"Error: %@", error.localizedDescription); 
     } 

    } progressBlock:nil]; 

Das "dispatch_async (dispatch_get_main_queue()^(void) ..." ist etwas, was ich versuchte, mein Problem zu lösen Bilder asynchron herunterzuladen, aber das tat es nicht arbeiten.

Vielen Dank im Voraus.

+0

was genau möchten Sie tun? Bild in Background herunterladen, beim Scrollen sollte es erscheinen, oder? – Santo

+0

ist dies bei cellForRow getan ... wenn das der Fall ist, werden Sie imageView hinzufügen, wodurch das Rendern der Ansicht immer langsamer wird, während sich die Ansicht anhäuft – Joshua

Antwort

0

warum Sie versuchen, die Bilder herunterzuladen. Wenn Sie Bilder in Collection verzögertes Laden ausführen möchten dritte Bibliothek. dann SDWebimages ist die beste Third-Party-Bibliothek dafür. Diese Bibliothek führt nicht nur das Lazy-Laden aus, sondern bietet auch mehrere andere Optionen. mal schauen.

Ich hoffe, dies hilft Ihnen und löst Ihr Problem.