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.
was genau möchten Sie tun? Bild in Background herunterladen, beim Scrollen sollte es erscheinen, oder? – Santo
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