2016-11-16 73 views
0

傍晚,我试图设置一个ImageView.image(在这种情况下是一个IBOutlet)与从网络下载的图像。iOS Objective-c:如何设置URL和ImageView

我已经在堆栈溢出中讨论了很多这方面的问题。

而且我发现这个共同的答案:

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

NSData *data = [NSData dataWithContentsOfURL:url]; 

NSLog(@"imageData: %@", data); 

UIImage *image = [UIImage imageWithData:data]; 

NSLog(@"image: %@", image); 

self.imageView.image = image; 

当然,在我的情况,但不起作用。我的日志始终为空。

你能告诉我哪个是问题吗?

+0

你在这里得到了什么结果'url' –

+0

“http://www.fnordware.com/superpng/pnggrad16rgb.png”。正确的那一个。 –

+1

您是否有任何有关运输安全异常的日志 – Vinodh

回答

2

我相信你正试图在iOS 8 +

运行,请添加到您的info.plist

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

,一切都应该罚款:)

为什么?

的iOS 8日起HTTP是不允许你可以选择使用HTTPS或添加例外您的info.plist :)

+0

这是问题! :) –

+0

@ the-miotz:很高兴你解决了它:) –

+0

@ the-miotz:谢谢哥们:) –

1

你应该使用SDWebImage库。它也可以缓存来自网址的图片。并使用非常简单

[yourImageView sd_setImageWithURL:[NSURL URLWithString:@"image-url"] placeholderImage:[UIImage imageNamed:@"photo.jpg"]] 

如果图像尚未加载,则显示占位符图像。

3

此URL为HTTP类型,因此您需要在您的plist文件中设置NSAppTransportSecurity。

对于过程

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

enter image description here

这可以帮助你。请让我知道如果有任何问题。

+3

为什么你再次发布相同的答案 –