2015-05-07 5 views
5

Я пытаюсь загрузить UIImage из его URL с completion и placeholder изображения, но ни UIImage, ни заполнитель UIImage не загружаются.нагрузки UIImage из URL в прошивкой

Вот мой код:

NSURL *url = [NSURL URLWithString:@"http://assets.gearlive.com/tvenvy/blogimages/stewiegriffin.jpg"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"bg.png"] 

     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
      imageView.image = image; 
     } 
     failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {} 
    ]; 
+1

Ваш код кажется правильным. Просто установите placeholder непосредственно 'self.imageView.image = [UIImage imageNamed: @" bg.png "];', чтобы убедиться, что ваш вид изображения виден и настройка изображения работает. – lukya

+0

Если настройка изображения напрямую не работает, установите цвет фона изображения 'self.imageView.backgroundColor = [UIColor redColor];' и запустите приложение, чтобы убедиться, что изображение на экране отображается на экране. – lukya

+0

@AdhRadwan Я написал ответ, попробуйте и сообщите мне. –

ответ

11

Используйте AFnetworking, где вы можете установить изображение заполнителя, если неправильный URL-адрес. Это более эффективно при загрузке изображений в виде таблицы или коллекции.

Импорт UIImageView+AFNetworking.h

#import "UIImageView+AFNetworking.h" 

и нам следующий код:

NSString *[email protected]"http://www.fnordware.com/superpng/pnggrad16rgb.png"; 
[self.image setImageWithURL:[NSURL URLWithString:url1] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

Вы можете скачать его с gitHub

+0

Я использовал SDImage, никогда не знал, что AF может это сделать ... Спасибо –

+0

Могу ли я использовать графический url как изображение-заполнитель? –

+0

Для будущих будущих разработчиков импорт больше не нужен. –

14

Попробуйте этот код, чтобы получить изображение ...

Код:

NSURL *url = [NSURL URLWithString:@"http://www.fnordware.com/superpng/pnggrad16rgb.png"]; 

NSData *data = [NSData dataWithContentsOfURL:url]; 
UIImage *image = [UIImage imageWithData:data]; 

[self.imageview1 setImage:image];  

Примечание: я использовал тест URL. вы можете использовать свой url.

Update: Swift 3,0 Код:

let url = URL(string: "http://www.fnordware.com/superpng/pnggrad16rgb.png") 
    do { 
     let data = try Data(contentsOf: url!) 
     var image = UIImage(data: data) 
     self.imageView.image = image 
     print(image) 
    } catch { 

    } 

Примечание: В Xcode версии 7.1 и выше вам необходимо установить АВР (App Transport Security). Чтобы установить ATS, вам нужно написать ниже код в файле info.plist. Убедитесь, что URL-адрес изображения не должен быть равен нулю.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 
+0

Протестировано это на игровых площадках, преобразованных в быстрое 3, и отлично работает! Благодаря! – Simon

+0

@Simon Добро пожаловать .... !!! –

+0

@Simon Спасибо за ваши отзывы, я обновил ответ, а также добавил код для быстрого. –

3

Отъезд AsyncImageView. Его лучший асинхронный загрузчик изображений AFAIK. все, что вам нужно сделать, - установить URL-адрес изображения в изображение, а остальное позаботится. включая кеширование.

+1

этот очень прост в использовании – thanhbinh84

2

Я нашел проблему

Мой код работает правильно.

Проблема была где-то в моем коде, ImageView был nil. Спасибо всем

Смежные вопросы