2016-11-16 67 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

爲什麼你再次發佈相同的答案 –