2015-05-07 9 views
5

Ich versuche, eine UIImage von seiner URL mit completion und placeholder Bild zu laden, aber weder die UIImage noch der Platzhalter UIImage geladen.laden UIImage von URL in iOS

Hier ist mein Code:

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

Ihr Code scheint richtig. Setzen Sie den Platzhalter direkt 'self.imageView.image = [UIImage imageNamed: @" bg.png "];', um sicherzustellen, dass Ihre Bildansicht sichtbar ist und das Bild funktioniert. – lukya

+0

Wenn das Bild nicht direkt eingestellt wird, setze die Hintergrundfarbe der Bildansicht 'self.imageView.backgroundColor = [UIColor redColor];' und führe die App aus, um sicherzustellen, dass die Bildansicht auf dem Bildschirm sichtbar ist. – lukya

+0

@AdhRadwan Ich habe eine Antwort gepostet und es mir mitgeteilt. –

Antwort

11

Verwenden Sie AFnetworking, wo Sie Platzhalterbild auch festlegen können, wenn die URL nicht korrekt ist. Dies ist effizienter, wenn Sie Bilder in eine Tabellenansicht oder eine Sammlungsansicht laden.

Import UIImageView+AFNetworking.h

#import "UIImageView+AFNetworking.h" 

und uns den folgenden Code ein:

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

Sie können es herunterladen von gitHub

+0

Ich hatte SDImage verwendet, wusste nie AF könnte das auch tun ... Danke –

+0

kann ich Bild URL als Platzhalterbild verwenden? –

+0

Für zukünftige Entwickler ist der Import nicht mehr notwendig. –

14

diesen Code Versuchen Bild zu erhalten ...

Code:

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

Hinweis: i Test-URL verwendet haben. Sie können Ihre URL verwenden.

Update: Swift 3.0-Code:

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 { 

    } 

Hinweis: In Xcode-Version 7.1 und höher Sie benötigen ATS (App Transport Security) einzustellen. Um ATS einzustellen, müssen Sie den folgenden Code in die Datei info.plist schreiben. Stellen Sie sicher, dass die URL des Bildes nicht Null ist.

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

Getestet dies in Spielplätze, konvertiert zu swift 3, und funktioniert perfekt! Vielen Dank! – Simon

+0

@Simon Sie sind willkommen .... !!! –

+0

@Simon Danke für Ihr Feedback Ich habe die Antwort aktualisiert und Code für Swift hinzugefügt. –

3

Auschecken AsyncImageView. Es ist der beste asynchrone Bildlader AFAIK. Alles, was Sie tun müssen, ist die Bild-URL auf die Bildansicht einzustellen und der Rest ist erledigt. einschließlich Caching.

+1

dieser ist sehr einfach zu bedienen – thanhbinh84

2

fand ich das Problem

Mein Code funktioniert ordnungsgemäß.

Das Problem irgendwo in meinem Code, war die ImageViewnil. Danke allen