Charger l'image à UICollectionView de manière Asynchrone?
Comment puis-je charger des images à un UICollectionview
de manière asynchrone?
À l'intérieur suivant la méthode?
- (PSTCollectionViewCell *)collectionView:(PSTCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
bookImage = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", docPath, [[preview objectAtIndex:indexPath.row] lastPathComponent]]];
[[cell grid_image] setImage:bookImage];
}
Dans viewdidload() je suis en utilisant la suite asynch appel à charger les images "preview "NSMutablearray
dispatch_queue_t imageLoadQueue = dispatch_queue_create("com.GMM.assamkar", NULL);
dispatch_async(imageLoadQueue, ^{
//Wait for 5 seconds...
usleep(1000000);
docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
for(int k=0; k <[allImage count] ;k++){
imgURL = [allImage objectAtIndex:k];
[imagePreview addObject:imgURL];
imgData=[NSData dataWithContentsOfURL:[NSURL URLWithString:imgURL]];
[imgData writeToFile:[NSString stringWithFormat:@"%@/%@", docPath, [allImage lastPathComponent]] atomically:YES];
}
[[self collectionView] reloadData];
});
S'il vous plaît aider moi..Maintenant sa prend trop de temps pour le chargement...
- Ce qui est trop long spécifiquement? Et quelle est la taille de l'image?
- vous devriez faire de cette [[auto collectionView] reloadData]; dans le thread principal. Ce n'est pas une réponse. C'est le commentaire seulement.
- utilisation EGOImageView : github.com/enormego/EGOImageLoading
- 10 kb images
Vous devez vous connecter pour publier un commentaire.
Essayer de répondre à votre question principale "Comment puis-je charger des images à un
UICollectionview
de manière asynchrone?"Je dirais solution proposée par "Natasha Murashev" ici, qui fonctionnait bien pour moi et c'est simple.
Si ici
imgURL = [allImage objectAtIndex:k];
dansallImage
propriété, que vous gardez tableau d'Url, puis mettre à jour votrecollectionView:cellForItemAtIndexPath:
méthode comme ceci:Et ajouter une méthode
downloadImageWithURL:completionBlock:
à votre classe, ce qui vous permettra de charger des images de manière asynchrone et mettre à jour des cellules dans CollectionView automatiquement lorsque les images sont téléchargées avec succès.Je vois que vous essayez de précharger les images avant de les afficher apparaît peut-être que ma solution n'est pas ce que vous ce que, mais à partir de votre question, il est difficile à dire. De toute façon, vous pouvez obtenir ce que vous voulez avec ce que bien.
Swift 2.2
Solution rapide.
L'utilisation de l'échantillon:
Ce code crée une file série:
donc chaque tâche DANS la FILE d'attente est effectuée dans le même thread successives. Par conséquent, votre travail unique thread est soutenue par le sommeil pour chaque tâche de chargement que de ralentir tout le processus de chargement.
Utilisation asynchrone SIMULTANÉES de la file d'attente en utilisant quelque chose comme ça:
Différée permet de Charger le Fichier pour votre condition.
LazyLoad.h
LazyLoad.m
Utiliser comme ceci
Télécharger La Démo Ici