2011-11-08 18 views
16

buduję app album zdjęciowy i znaleźć kilka bibliotek buforowania obrazu, a mianowicie:Która biblioteka buforowania obrazu dla systemu iOS?

Co chcesz polecić jeden (lub innymi bibliotekami nie na liście)? Szukam:

  • racjonalizacji
  • minimalnym wysiłku w zakresie zbierania śmieci
  • Pomoc dla bloków preferowane

Dzięki

+0

[ZDS_Shared] (https://github.com/ZarraStudios/ZDS_Shared) ma ograniczanie przepustowości, ale brak żądań synchronicznych (to znaczy zwraca zero dla zasobu, gdy buforowanie jest w toku). Działa z kolejkami operacji, więc domyślam się, że możesz dodać do tego wywołanie NSInvocation. – Jano

Odpowiedz

15

Osobiście uważam SDWebImage jest najlepszy, bo to jest absolutnie bezczynnym rozwiązaniem i zapewnia najprostszy mechanizm obsługi pamięci podręcznej, ponieważ jest po prostu rozszerzeniem klasy UIImageView.

+2

Naprawdę nie trwało to 10 minut, aby skompilować SDWebImage, wybrać i dołączyć odpowiednią bibliotekę i dodać linię do jej użycia. Znakomity! – axello

+0

Wypróbuj również SmartStorage (github.com/Alterplay/APSmartStorage). Automatycznie buforuje UIImage/NSData na dysku lub w pamięci. Jest bardzo inteligentny. – slatvick

+0

Jesteśmy teraz w 2014 roku i ta biblioteka ma głupi błąd, nie wyświetla obrazów zawierających kropki w nazwie pliku –

11

Pobieranie asynchronicznego obrazu i buforowanie obrazu nie jest prostym zadaniem. Trzeba to zrobić dobrze, bo inaczej pokona swój cel. Dlatego zdecydowanie sugeruję, abyś ostatecznie zbudował swój własny. Powiedziawszy to, potrzebowałem szybkiego i prostego rozwiązania, aby przejść do rozwoju mojej aplikacji.

znalazłem następujących rozwiązań:

Próbowałem HJCache, ale tak się nie stało oferują wspaniałe przewijanie, gdy obsługa dużych obrazów (1,5M +). Dla małych zdjęć działało jednak świetnie. Próbowałem również LazyTableImages, ale integracja nie była prosta.

Ostatecznie wybrałem SDWebImage. Integracja nie może być prostsza. Po połączeniu z biblioteki do projektu wszystko, co trzeba zrobić, to:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

w tableView:cellForRowAtIndexPath:.

Dodatkowo:

  • Works z własnych komórek, jak również
  • nie blokuje UI
  • Propozycje doskonałą wydajność przewijanie
  • pobieranie obrazu i buforowanie jest bez zarzutu.
0

Próbowałem używać SDWebImage.

Uzgodniono, że integracja jest bardzo łatwa.

Jednak poważnym problemem związanym z tą biblioteką jest to, że nie uwzględnia ona kontroli pamięci podręcznej "wiek maksymalny".

Biblioteka jest nadal w fazie rozwoju, ale nie wybiera tego ograniczenia.

2

Spróbuj również APSmartStorage. Automatycznie buforuje UIImage/NSData na dysku lub w pamięci.

Ma ładny interfejs API w stylu blokó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 
    } 
}]; 

Jest to dość silny i nadal prosta:

enter image description here

0

gorąco polecam spróbować Kingfisher i SDWebImage. Oba działają idealnie do pobierania i buforowania obrazów z sieci.

Powiązane problemy