Jest to proces trzech krok. Najpierw utworzysz obiekt NSURL
, aby zachować adres URL, do którego próbujemy uzyskać dostęp. Dostarczymy ten adres URL do metody klasy NSData
, +dataWithContentsOfURL:
, aby uzyskać obraz w sieci jako dane nieprzetworzone, a następnie za pomocą metody klasy +imageWithData:
na UIImage
przekształcić dane w obraz.
NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];
Należy pamiętać, że +dataWithContentsOfURL:
wykonuje synchroniczne żądanie sieciowe. Uruchomienie tego w głównym wątku spowoduje zablokowanie interfejsu użytkownika do momentu otrzymania danych obrazu z sieci. Najlepszą praktyką jest uruchamianie dowolnego kodu sieciowego w wątku w tle. Jeśli kierujesz OS 4.0+ można zrobić coś takiego ...
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];
});
});
Może chcesz obejrzeć ten projekt: https://github.com/rs/SDWebImage – Intentss