Która biblioteka buforowania obrazów dla iOS?
Buduję aplikację do albumów fotograficznych i znajduję kilka bibliotek buforowania obrazów, a mianowicie:
Jaki polecacie (lub inne libsy nie na liście)? Szukam:
- Efektywność
- minimalny wysiłek w zakresie zbierania śmieci
- wsparcie dla bloków preferowanych
Thanks
6 answers
Osobiście uważam, że SDWebImage jest najlepszym rozwiązaniem, ponieważ jest to rozwiązanie absolutnie bez wysiłku i zapewnia najprostszy mechanizm obsługi pamięci podręcznej, ponieważ jest to po prostu rozszerzenie klasy UIImageView.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-05 16:37:51
Pobieranie i buforowanie obrazów nie jest prostym zadaniem. Trzeba to zrobić dobrze, bo inaczej to pokona swój cel. Dlatego zdecydowanie sugeruję, abyś w końcu zbudował swój własny. Mimo to potrzebowałem szybkiego i prostego rozwiązania, aby kontynuować rozwój mojej aplikacji.
Znalazłem takie rozwiązania:
- HJCache
- SDWebImage
- Apple ' s LazyTableImages
- adaptacja z Apple ' s LazyTableImages, MHLazyTableImages
Próbowałem HJCache, ale nie oferował dużej wydajności przewijania podczas obsługi dużych obrazów(1.5 m+). W przypadku małych obrazów działało to świetnie. Próbowałem również obu LazyTableImages, ale integracja nie była prosta.
Ostatecznie wybrałem SDWebImage. Integracja nie może być prostsza. Po połączeniu biblioteki z projektem wystarczy:[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
W Twoim tableView:cellForRowAtIndexPath:
.
DODATKOWO:
- działa również z niestandardowymi komórkami
- nie blokuje interfejsu użytkownika
- oferuje doskonałą wydajność przewijania
- pobieranie i buforowanie obrazów jest bezproblemowe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-24 20:23:59
Spróbuj również APSmartStorage . Automatycznie buforuje UIImage / NSData na dysku lub w pamięci.
Ma śliczne API w stylu klocków;
// 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
}
}];
To całkiem sprytne i wciąż proste:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-10 13:51:33
Istnieje wiele frameworków, które rozwiązują ten problem. Żeby wymienić tylko kilka:
Swift:
- Nuke (moje)
- Zimorodek
- AlamofireImage
- HanekeSwift
Objective-C:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-22 10:30:48
Próbowałem użyć SDWebImage.
Zgodziłem się, że jest to bardzo łatwe do integracji.
Jednak dużym problemem w tej bibliotece jest to, że nie honoruje ona kontroli pamięci podręcznej "max-age".
Biblioteka jest nadal w fazie rozwoju, ale nie wybierają tego ograniczenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-02 06:28:47
Zdecydowanie polecam spróbować KingfisherI SDWebImage. Oba działają doskonale do pobierania i buforowania obrazów z sieci.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-20 19:50:51