Я могу загрузить UIImage из URL?

У меня есть URL для изображения (получил его от UIImagePickerController), но у меня больше нет изображения в памяти (URL был сохранен от предыдущего выполнения приложения). Я могу перезагрузить UIImage от URL снова?

Я вижу, что UIImage имеет imageWithContentsOfFile: но у меня есть URL. Могу я использовать dataWithContentsOfURL NSDATA: считать URL?

EDIT1


на основе ответа @Daniel я попробовал следующий код, но он не работает...

NSLog(@"%s %@", __PRETTY_FUNCTION__, photoURL);     
if (photoURL) {
    NSURL* aURL = [NSURL URLWithString:photoURL];
    NSData* data = [[NSData alloc] initWithContentsOfURL:aURL];
    self.photoImage = [UIImage imageWithData:data];
    [data release];
}

Когда я выполнил его консольные шоу:

-[PhotoBox willMoveToWindow:] file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG
*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0'

Смотря на стек вызовов, я называю URLWithString, который называет URLWithString:relativeToURL: затем initWithString:relativeToURL: затем _CFStringIsLegalURLString, затем CFStringGetLength, затем forwarding_prep_0, затем передача, затем - [NSObject doesNotRecognizeSelector].

Какие-либо идеи, почему мой NSString (адрес фото-URL является 0x536fbe0) не отвечает на длину? Почему это говорит, что не отвечает на - [Длина NSURL]? Разве это не знает, что параметрический усилитель является NSString, не NSURL?

EDIT2


Хорошо, единственной проблемой с кодом является строка к преобразованию URL. Если я hardcode строка, все остальное хорошо работает. Таким образом, что-то неправильно с моим NSString и если я не могу понять это, я предполагаю, что это должно войти как другой вопрос. С этой вставленной строкой (я вставил путь от консольного журнала выше), он хорошо работает:

photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";
131
задан TheNeil 17 May 2019 в 18:13
поделиться

2 ответа

Вы можете сделать это так (синхронно, но компактно):

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:MyURL]]];

Гораздо лучший подход - использовать LazyTableImages от Apple для сохранения интерактивности.

314
ответ дан 24 November 2019 в 00:14
поделиться

Ознакомьтесь с AsyncImageView , предоставленным на здесь . Хороший пример кода, который может быть даже использован для вас «из коробки».

4
ответ дан 24 November 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: