2017-03-11 3 views
0

Ich gründe Bild in UIImageView mit:Set UIImageView mit URL

[self.imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:[UIImage imageNamed:@"random_image"]]; 

Ich bin in der Lage, das Bild auf Telefon, um zu sehen, wie erwartet.

Allerdings, wenn ich die Methode ohne Platzhalter Argument verwenden

[self.imageView setImageWithURL:[NSURL URLWithString:urlString]]; 

OR passieren die placeholderImage als null

[self.imageView setImageWithURL:[NSURL URLWithString:urlString] placeholderImage:nil]; 

dann das Bild nicht gesetzt ist und mein Imageview ist leer. Ich verstehe, dass das Platzhalterbild für "den aktuellen Status des Assets darstellt, der für die temporäre Anzeige in der Benutzeroberfläche Ihrer Erweiterung geeignet ist.".

Ich verstehe nicht, wie seine Abwesenheit mich beeinflussen sollte, wie es wirkt. Irgendwelche Zeiger?

+0

Ihre Imageview Größe überprüfen möglicherweise sein (0; 0) –

+0

Platzhalter Bild gibt eine innere Größe zu Ihrer Bildansicht, die beim Ersetzen tatsächliches Bildes hilft innerhalb der Platzhaltergrenze. Wenn der Bildansicht keine Beschränkungen für Höhe/Breite zugewiesen wurden, ist die Größe (0, 0). – Pawan

+0

Ich habe imageView in Storyboard mit nicht (0,0) deklariert. Aber ihr habt recht, im Code ist die Framegröße 0,0. Aber selbst wenn ich die Bildgröße manuell gebe, wird das Bild nicht angezeigt. Gibt es eine andere Möglichkeit, "intrinsische Größe" zu definieren? –

Antwort

0

Wenn Sie das standardmäßige Platzhalterbild festlegen, wird Bildansicht Breite und Nacht angezeigt. Andernfalls kann der Bildansichtsrahmen (0,0) sein.

Oder

Das Bild asynchron NSURLConnection Verwendung heruntergeladen werden soll, und nur ein einziges Mal sollte es vollständig heruntergeladen ist es in einem UIImage und zugewiesen, um die Fotoansicht

[NSURLConnection sendAsynchronousRequest umgewandelt werden: [NSURLRequest requestWithURL: [ NSURL URLWithString: imageUrl]] Warteschlange: [NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * Antwort, NSData * data, NSError * error) {

ImageViewName.image = [UIImage imageWithData:data]; 

}];

+0

Danke für die Hilfe. Ich habe versucht, Frame mit CGRectMake-Methode hinzuzufügen und auch Ihre zweite Lösung ausprobiert. Hat nicht funktioniert. –

0

Ich habe das Problem gefunden. Ich habe eine Bildansicht in UITableViewCell mit dem Namen imageView hinzugefügt. Anscheinend hat UITableViewCell bereits eine Eigenschaft mit dem gleichen Namen. Ich habe den Namen von myImageView in cellImageView geändert und benötige den Platzhalterparameter jetzt nicht mehr! Nachdem ich das gesagt habe, verstehe ich immer noch nicht, was hinter den Bildschirmen passiert ist!

0

i dieser Code hoffen u helfen ....

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 
    dispatch_async(queue, ^{ 

     UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL: 
               [NSURL URLWithString:@“image URL”]]]; 
     dispatch_sync(dispatch_get_main_queue(), ^{ 

       [[cell myimage] setImage:image]; 

      } 
     }); 
    });