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

Author: ohho, 2011-11-08

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.

 16
Author: Alex Coplan,
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:

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.
 11
Author: rjgonzo,
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:

Tutaj wpisz opis obrazka

 2
Author: slatvick,
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:

Objective-C:

 2
Author: kean,
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.

 0
Author: Abhijit,
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.

 0
Author: Vinoth Vino,
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