2011-11-08 13 views
16

Sto costruendo un album di foto app e trovare un paio di librerie di immagini di cache, vale a dire:Quale libreria di memorizzazione immagini per iOS?

Che quello che consiglierei (o altre librerie non sulla lista)? Cerco:

  • efficienza
  • Minimo sforzo in termini di raccolta dei rifiuti
  • Supporto per blocchi preferito

Grazie

+0

[ZDS_Shared] (https://github.com/ZarraStudios/ZDS_Shared) ha una limitazione della larghezza di banda ma nessuna richiesta sincrona (ovvero restituisce nil per una risorsa quando la memorizzazione nella cache è in sospeso). Funziona con le code di operazioni quindi suppongo che potresti aggiungere una chiamata con NSInvocation per questo. – Jano

risposta

15

Personalmente, penso che SDWebImage è il migliore perché è una soluzione assoluta senza sforzo e fornisce il meccanismo più semplice per la gestione della cache in quanto è semplicemente un'estensione della classe UIImageView.

+2

Sono stati necessari meno di 10 minuti per compilare SDWebImage, scegliere e includere la libreria corretta e aggiungere la linea per usarla. Brillante! – axello

+0

Provare anche SmartStorage (github.com/Alterplay/APSmartStorage). Memorizza automaticamente UIImage/NSData su disco o in memoria. È molto intelligente – slatvick

+0

Siamo nel 2014 e questa libreria ha un bug stupido, non mostra immagini contenenti punti nel nome file –

11

Il download asincrono di immagini e il caching non sono un'operazione semplice. Deve essere fatto bene altrimenti non riuscirà a sconfiggere il suo scopo. Pertanto suggerisco caldamente che alla fine tu costruisca il tuo. Detto questo, avevo bisogno di una soluzione rapida e semplice per andare avanti con lo sviluppo della mia applicazione.

ho trovato queste soluzioni:

ho provato HJCache, ma non ha offre grandi prestazioni di scorrimento quando gestione di immagini di grandi dimensioni (1,5 M +). Per le immagini piccole ha funzionato benissimo però. Ho provato entrambi i LazyTableImages ma l'integrazione non è stata semplice.

In definitiva, ho scelto SDWebImage. L'integrazione non potrebbe essere più semplice. Una volta che avete collegato la libreria al progetto tutto quello che dovete fare è:

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

nel vostro tableView:cellForRowAtIndexPath:.

Inoltre:

  • lavori con le cellule personalizzati così
  • Non blocca l'interfaccia utente
  • offre grandi prestazioni di scorrimento
  • Immagine download e cache è senza soluzione di continuità.
0

Ho provato a utilizzare SDWebImage.

Concordato che è molto facile da integrare.

Tuttavia il grosso problema con questa libreria è che non rispetta il controllo della cache "max-age".

La libreria è ancora in fase di sviluppo ma non stanno rilevando questa limitazione.

2

Provare anche APSmartStorage. Memorizza automaticamente UIImage/NSData su disco o in memoria.

Ha un'apposita API in stile Blocks;

// 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 
    } 
}]; 

E 'abbastanza intelligente e ancora semplice:

enter image description here

0

vi consiglio vivamente di provare Kingfisher e SDWebImage. Entrambi funzionano perfettamente per scaricare e memorizzare nella cache le immagini dal web.

Problemi correlati