Tworzenie interfejsu użytkownika z adresem URL w systemie iOS

Aby utworzyć interfejs z plikiem obrazu, używam kodu jak poniżej:

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

Jeśli chcę utworzyć interfejs użytkownika z adresem URL http://example.com/demo.jpg , Jak to zrobić?

Thanks

UPDATE

Tutaj wpisz opis obrazka

Author: Mark Adams, 2011-10-08

3 answers

Jest to proces trzyetapowy. Najpierw utworzysz obiekt NSURL do przechowywania adresu URL, do którego chcemy uzyskać dostęp. Dostarczymy ten adres URL do metody NSData class, +dataWithContentsOfURL:, Aby uzyskać obraz w sieci jako surowe dane, a następnie użyj metody +imageWithData: class na UIImage, Aby przekonwertować dane na 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. Jeśli uruchomisz to w głównym wątku, zablokuje to interfejs użytkownika, dopóki dane obrazu nie zostaną odebrane z sieci. Najlepsze praktyka polega na uruchomieniu dowolnego kodu sieciowego w wątku tła. Jeśli kierujesz OS 4.0+, możesz 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];
    });
});
 153
Author: Mark Adams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-16 17:18:58

Oto jak ten sam kod może wyglądać w Swift:

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
    }
}
 7
Author: Dave Kiss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-24 01:35:58

Dla każdego, kto chce załadować obraz z sieci, może być pomocna następująca biblioteka:

Https://github.com/rs/SDWebImage

Jest to kategoria UIImageView, która obsługuje ładowanie asynchroniczne i buforowanie obrazu z adresu url.

 0
Author: vir us,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 19:08:28