43 votes

iOS - Mise en cache et chargement des images de manière asynchrone

Je veux une image de chargement et la mise en cache de la bibliothèque pour iOS qui

  • charge les images en mode asynchrone,
  • les caches des images, avec un configurables et la taille du cache LRU comportement,
  • vérifie pour voir si les images ont été mises à jour, à l'aide de HTTP TÊTE,
  • ne cache rien dans le cas d'un code d'erreur ou une défaillance de l'image.

J'ai regardé HJCache, mais il ne satisfait aux deux premiers de ces critères. Est-il quelque chose de mieux?

29voto

Tony Points 2886

Je sais que ce fil de discussion a été répondue, mais j'ai essayé une bibliothèque qui a beaucoup travaillé. J'ai été en utilisant ASIHttpRequest avant et la différence est grande.

https://github.com/rs/SDWebImage

Aussi, si quelqu'un a besoin de Redimensionner ou Recadrer les images à distance, et ont les mêmes fonctions que SDWebImage fournir, j'ai intégré SDWebImage bibliothèque avec UIImage+Redimensionnement de la bibliothèque (par Trevor Harmon), et a créé un exemple de projet. J'ai modifié le code de SDWebImage de traiter avec des transformations (recadrer, de redimensionner).

Le projet est public sur https://github.com/toptierlabs/ImageCacheResize. N'hésitez pas à utiliser!

25voto

deanWombourne Points 26066

EDIT : ASI a été abandonnée maintenant, mais @Tony, en réponse a un lien vers une bibliothèque qui semble faire le plus de ce (avis de non responsabilité - je n'ai pas encore essayé et je vais par @Tony recommandation!)


ASIHTTPRequest le fait :)

Tout ce que vous avez à faire est d'ajouter quelque chose de similaire à la réussite de rappel

UIImage *image = [UIImage imageWithData:[request responseData]];

// If the image is nil ASIHTTPRequest will let you remove the data from the cache
// but I can't remember off the top of my head how. Checkout the docs!

MODIFIER

Et lorsque vous avez terminé, vous pouvez toujours sauter sur github pour le reste d'entre nous . . .

1voto

occulus Points 10906

J'ai eu un coup d'oeil récemment pour le genre de chose que vous décrivez -- soit un grand cache de données, ou une image centrée sur l'un, et n'ai pas trouvé beaucoup d'intérêt. Ainsi, vous pourriez avoir à rouler votre propre pour obtenir toutes ces fonctionnalités.

Il y a différents blogs des postes et des choses détaillant de telles choses, comme http://davidgolightly.blogspot.com/2009/02/asynchronous-image-caching-with-iphone.html.

- Je prendre ce que vous avez considéré comme le Three20 bibliothèque? Je ne pense pas qu'il serait de couvrir vos besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X