iOS - Кэширование и загрузка изображений асинхронно - PullRequest
43 голосов
/ 22 февраля 2011

Я хочу библиотеку загрузки и кэширования изображений для iOS, которая

  • загружает изображения асинхронно,
  • кэширует изображения, с настраиваемым размером кэша и поведением LRU,
  • проверяет, обновлены ли изображения, используя HTTP HEAD,
  • ничего не кэширует в случае кода ошибки или неверного изображения.

Я смотрел на HJCache , но он удовлетворяет только первым двум из этих критериев. Есть что-то лучше?

Ответы [ 3 ]

29 голосов
/ 28 октября 2012

Я знаю, что на эту ветку получен ответ, но я попробовал библиотеку, которая отлично работала.Я использовал ASIHttpRequest и раньше, и разница большая.

https://github.com/rs/SDWebImage

Кроме того, если кому-то нужно изменить размер или обрезать удаленные изображения и иметь те же функции, что и SDWebImage, у меня естьинтегрировала библиотеку SDWebImage с библиотекой UIImage + Resize (от Trevor Harmon) и создала пример проекта.Я изменил код SDWebImage для работы с преобразованиями (обрезка, изменение размера).

Проект открыт для https://github.com/toptierlabs/ImageCacheResize. Не стесняйтесь использовать его!

25 голосов
/ 22 февраля 2011

РЕДАКТИРОВАТЬ: ASI устарела, но в ответе @ Tony есть ссылка на библиотеку, которая, кажется, выполняет большую часть этого (заявление об отказе - я еще не пробовал и собираюсь по рекомендации @ Tony!)


ASIHTTPRequest делает все это:)

Все, что вам нужно сделать, это добавить что-то вроде обратного вызова успеха

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!

EDIT

И когда вы закончите, вы всегда можете добавить его на github для всех нас. , ,

1 голос
/ 22 февраля 2011

Недавно я искал что-то, что вы описываете - общий кеш данных или кэш, ориентированный на изображение - и не нашел большого интереса.Таким образом, вам, возможно, придется свернуть свой собственный, чтобы получить все эти функции.

Существуют различные посты в блогах и такие подробности, такие как http://davidgolightly.blogspot.com/2009/02/asynchronous-image-caching-with-iphone.html.

Я так понимаю, вы рассматривали библиотеку Three20?Я не думаю, что это будет соответствовать вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...