47 Stimmen

Ein UIImage mit einer URL in iOS erstellen

Um ein UiImage mit einer Bilddatei zu erstellen, verwende ich den unten stehenden Code:

UIImage *aImage = [[UIImage imageNamed:@"demo.jpg"]autorelease];

Wenn ich ein UiImage mit der URL erstellen möchte http://example.com/demo.jpg Wie kann man das tun?

Merci

UPDATE

enter image description here

153voto

Mark Adams Punkte 30572

Dies ist ein dreistufiger Prozess. Zuerst erstellen Sie eine NSURL Objekt, das die URL enthält, auf die wir zuzugreifen versuchen. Wir übergeben diese URL an das NSData Klasse Methode, +dataWithContentsOfURL: um das Bild über das Netz als Rohdaten zu erhalten, und verwenden Sie dann die +imageWithData: Klassenmethode auf UIImage um die Daten in ein Bild umzuwandeln.

NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];

Bitte beachten Sie, dass +dataWithContentsOfURL: führt eine synchrone Netzwerkanfrage aus. Wenn Sie dies im Hauptthread ausführen, wird die Benutzeroberfläche blockiert, bis die Bilddaten vom Netzwerk empfangen wurden. Am besten ist es, jeglichen Netzwerkcode in einem Hintergrund-Thread auszuführen. Wenn Sie auf OS 4.0+ abzielen, könnten Sie so etwas tun...

NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    NSData *imageData = [NSData dataWithContentsOfURL:imageURL];

    dispatch_async(dispatch_get_main_queue(), ^{
        // Update the UI
        self.imageView.image = [UIImage imageWithData:imageData];
    });
});

7voto

Dave Kiss Punkte 9984

Hier sehen Sie, wie derselbe Code in Swift aussehen könnte:

let image_url = NSURL("http://i.imgur.com/3yY2qdu.jpg")

let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
    // do some task
    let image_data = NSData(contentsOfURL: image_url!)

    dispatch_async(dispatch_get_main_queue()) {
        // update some UI
        let image = UIImage(data: image_data!)
        self.imageView.image = image
    }
}

0voto

vir us Punkte 8598

Für alle, die Bilder aus dem Internet laden möchten, kann die folgende Bibliothek hilfreich sein:

https://github.com/rs/SDWebImage

Es ist ein UIImageView Kategorie, die das asynchrone Laden und Zwischenspeichern von Bildern aus Url.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X