web-dev-qa-db-ja.com

iOSのURLからUIImageをロードする

URLからUIImagecompletionの画像を使用してplaceholderを読み込もうとしていますが、UIImageもプレースホルダーUIImageも読み込まれていません。

これが私のコードです:

  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) {}
   ];
5
Ahd Radwan

AFnetworkingを使用すると、URLが正しくない場合にもプレースホルダー画像を設定できます。これは、テーブルビューまたはコレクションビューで画像をロードする場合に効率的です。

インポートUIImageView+AFNetworking.h

#import "UIImageView+AFNetworking.h"

そして私たちに次のコード:

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

あなたはそれをダウンロードすることができます gitHub

12
Akshay Karanth

このコードを試して画像を取得してください...

コード:

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を使うことができます。

更新: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以降では、ATS(App Transport Security)を設定する必要があります。 ATSを設定するには、info.plistファイルに以下のコードを書き込む必要があります。画像のURLがnilでないことを確認してください。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
15
Ashok Londhe

チェックアウト AsyncImageView 。その最高の非同期画像ローダーAFAIK。画像のURLをimageviewに設定するだけで、残りはすべて処理されます。キャッシングを含む。

3
ShahiM

問題が見つかりました

私のコードは正しく機能しています。

問題は私のコードのどこかにあり、ImageViewnilでした。皆さんありがとう

1
Ahd Radwan