2016-11-16 5 views
0

夕方、私はImageView.image(この場合はIBOutlet)をWebからダウンロードした画像で設定しようとしています。iOS Objective-c:URLから画像を設定する方法

私はスタックオーバーフローでこれについて多くの疑問を抱えています。

そして、私はこの共通の答えを見つけた:

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; 

しかし、私の場合はもちろんの

が動作しません。私のログは常にnullです。

問題はどちらですか?

+0

あなたが得た結果は、 'url' –

+0

" http://www.fnordware.com/superpng/pnggrad16rgb.png "です。正しいもの –

+1

トランスポートセキュリティ例外に関するログはありましたか – Vinodh

答えて

2

は、私はあなたがする必要がありますあなたのInfo.plist

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

、すべてにこれを追加してください+

のiOS 8でそれを実行しようとしていると信じて罰金:)

WHY?

のiOS 8以降のhttpあなたはどちらかhttpsを使用したりするinfo.plistに例外を追加する必要が許可されていない:)

+0

それは問題でした! :) –

+0

@ the-miotz:嬉しいですが解決しました:) –

+0

@ the-miotz:ありがとうございました:) –

1

あなたがSDWebImageライブラリを使用する必要があります。それはまた、URLから画像をキャッシュすることができます。非常に簡単に使用してください

[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

なぜあなたは同じ回答を再度投稿しましたか –

関連する問題