2015-05-07 24 views
5

Sto cercando di caricare un UIImage dal suo URL con completion e l'immagine placeholder, ma né il UIImage né il segnaposto UIImage vengono caricati.carico UIImage da URL in iOS

Ecco il mio codice:

NSURL *url = [NSURL URLWithString:@"http://assets.gearlive.com/tvenvy/blogimages/stewiegriffin.jpg"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"bg.png"] 

     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
      imageView.image = image; 
     } 
     failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {} 
    ]; 
+1

Il tuo codice sembra corretto. Basta impostare direttamente il segnaposto 'self.imageView.image = [UIImage imageNamed: @" bg.png "];' per assicurarsi che la vista dell'immagine sia visibile e che l'immagine funzioni. – lukya

+0

Se l'impostazione dell'immagine direttamente non funziona, imposta il colore di sfondo della vista dell'immagine 'self.imageView.backgroundColor = [UIColor redColor];' ed esegui l'app per assicurarti che la vista dell'immagine sia visibile sullo schermo .. – lukya

+0

@AdhRadwan ho postato risposta prova e informami. –

risposta

11

Utilizzare AFnetworking dove è possibile impostare l'immagine segnaposto anche se l'URL non è corretto. Questo è più efficiente quando si caricano le immagini in una vista tabella o raccolta.

Import UIImageView+AFNetworking.h

#import "UIImageView+AFNetworking.h" 

e ci ha il seguente codice:

NSString *[email protected]"http://www.fnordware.com/superpng/pnggrad16rgb.png"; 
[self.image setImageWithURL:[NSURL URLWithString:url1] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

È possibile scaricarlo da gitHub

+0

Ho usato SDImage, non ho mai saputo che l'AF poteva fare anche questo ... Grazie –

+0

posso usare l'URL dell'immagine come immagine segnaposto? –

+0

Per gli sviluppatori futuri, l'importazione non è più necessaria. –

14

provare questo codice per ottenere l'immagine ...

Codice:

NSURL *url = [NSURL URLWithString:@"http://www.fnordware.com/superpng/pnggrad16rgb.png"]; 

NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [UIImage imageWithData:data]; 

[self.imageview1 setImage:image];  

Nota: ho usato prova url. puoi usare il tuo url.

Aggiornamento: Swift 3.0 Codice:

let url = URL(string: "http://www.fnordware.com/superpng/pnggrad16rgb.png") 
    do { 
     let data = try Data(contentsOf: url!) 
     var image = UIImage(data: data) 
     self.imageView.image = image 
     print(image) 
    } catch { 

    } 

Nota: in Xcode versione 7.1 e superiori è necessario impostare ATS (App Transport Security). Per impostare ATS è necessario scrivere sotto il codice nel file info.plist. Assicurati che l'URL dell'immagine non sia zero.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 
+0

Testato in Playgrounds, convertito in swift 3 e funziona perfettamente! Grazie! – Simon

+0

@Simon Siete i benvenuti .... !!! –

+0

@Simon Grazie per il tuo feedback ho aggiornato la risposta e ho aggiunto anche il codice per swift. –

3

Partenza AsyncImageView. È il miglior caricatore di immagini asincrone AFAIK. tutto ciò che devi fare è impostare l'URL dell'immagine sulla vista di immagini e il resto è a posto. compresa la memorizzazione nella cache.

+1

questo è molto facile da usare – thanhbinh84

2

ho trovato il problema

Il mio codice funziona correttamente.

Il problema era da qualche parte nel mio codice, il ImageView era nil. Grazie a tutti