Ответ 1
Лично я считаю, что SDWebImage является лучшим, потому что это абсолютное решение без усилий и обеспечивает простейший механизм обработки кеша поскольку это просто расширение класса UIImageView.
Я создаю приложение фотоальбома и нахожу несколько библиотек кэширования изображений, а именно:
Что вы рекомендовали бы (или другие библиотеки не в списке)? Я ищу:
Спасибо
Лично я считаю, что SDWebImage является лучшим, потому что это абсолютное решение без усилий и обеспечивает простейший механизм обработки кеша поскольку это просто расширение класса UIImageView.
Загрузка и кеширование изображений async - непростая задача. Это нужно сделать хорошо, иначе это победит его цель. Поэтому я настоятельно рекомендую, чтобы в итоге вы создали свой собственный. Сказав это, мне нужно было быстрое и простое решение, чтобы продвинуться вперед в разработке моего приложения.
Я нашел эти решения:
Я попробовал HJCache, но при обработке больших изображений (1.5M +) он не показывал отличную производительность прокрутки. Для небольших изображений он отлично работал. Пробовал и LazyTableImages, но интеграция была не простой.
В конечном итоге я выбрал SDWebImage. Интеграция не может быть проще. После того, как вы связали библиотеку с вашим проектом, вам нужно всего лишь:
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
в tableView:cellForRowAtIndexPath:
.
Дополнительно:
Существует несколько фреймворков, которые решают эту проблему. Просто чтобы назвать несколько:
Swift:
Objective-C:
Попробуйте также APSmartStorage. Он автоматически кэширует UIImage/NSData на диске или в памяти.
Он имеет симпатичный API-интерфейс в стиле блоков,
// setup data parsing block
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url)
{
return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale];
};
...
// show some progress/activity
...
// load object with URL
[APSmartStorage.sharedInstance loadObjectWithURL:imageURL callback:(id object, NSError *error)
{
// hide progress/activity
if (error)
{
// show error
}
else
{
// do something with object
}
}];
Это довольно умный и все еще простой:
Я попытался использовать SDWebImage.
Согласился, что его очень легко интегрировать.
Однако большая проблема с этой библиотекой заключается в том, что она не соблюдает контроль кеша "максимальный возраст".
Библиотека все еще находится в разработке, но они не выбирают это ограничение.
Я настоятельно рекомендую вам попробовать Kingfisher и SDWebImage. Оба прекрасно работают для загрузки и кэширования изображений из Интернета.
Moa - это библиотека загрузки изображений, написанная в Swift. Он позволяет загружать и показывать изображение в представлении изображения, установив его свойство moa.url.
Установка Используйте CocoaPods для добавления Moa в ваш проект. Просто добавьте следующую строку в свой подфайл.
pod 'moa', '~> 8.0'