Um ein UiImage mit einer Image-Datei zu erstellen, verwende ich den folgenden Code:
UIImage *aImage = [[UIImage imageNamed:@"demo.jpg"]autorelease];
Wenn ich ein UiImage mit der URL http://example.com/demo.jpg erstellen möchte, wie geht das?
Vielen Dank
AKTUALISIEREN
Dies ist ein dreistufiger Prozess. Zunächst erstellen Sie ein NSURL
-Objekt, das die URL enthält, auf die Sie zugreifen möchten. Wir geben diese URL an die NSData
-Klassenmethode, +dataWithContentsOfURL:
, um das Bild als Rohdaten über das Netzwerk zu erhalten, und konvertieren Sie die Daten anschließend mit der +imageWithData:
-Klassenmethode für UIImage
in ein Bild.
NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];
Bitte beachten Sie, dass +dataWithContentsOfURL:
eine synchrone Netzwerkanfrage ausführt. Wenn Sie dies im Haupt-Thread ausführen, wird die Benutzeroberfläche so lange blockiert, bis die Bilddaten vom Netzwerk empfangen werden. Es wird empfohlen, jeden Netzwerkcode in einem Hintergrundthread auszuführen. Wenn Sie auf OS 4.0 oder höher abzielen, können 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];
});
});
So könnte der gleiche Code in Swift aussehen:
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
}
}
Für alle, die ein Bild aus dem Internet laden möchten, kann die folgende Bibliothek hilfreich sein:
https://github.com/rs/SDWebImage
Es ist eine UIImageView
-Kategorie, die das asynchrone Laden und das Zwischenspeichern von Bildern von der URL übernimmt.