2017-02-02 11 views
2

ダウンロードが進行するまでイメージビューの背景色を表示したい場合、ダウンロードが失敗するかイメージが使用できない場合はプレースホルダイメージを表示します。どうすればこれを達成できますか?イメージがSDWebImageをロードできない場合にのみプレースホルダイメージを設定

主な目的は、ロード中ではなくイメージを後で設定することです。

おかげ

SDWebImage Documentationから
+1

必須ではありません。私は全体を通して使用しています imageView.sd_setImage(with:url、placeholderImage:UIImage( "ico_placeholder")) しかし、それはロードが進行中であってもプレースホルダ画像を設定するということです。ロードが失敗した場合にのみプレースホルダを表示したい。 –

答えて

2

ソリューション:Objective Cのための

cell.imageView?.sd_setImage(with: url) { (image, error, cache, urls) in 
      if (error != nil) { 
       cell.imageView.image = UIImage(named: "ico_placeholder") 
      } else { 
       cell.imageView.image = image 
      } 
} 

ソリューション:

[cell.imageView sd_setImageWithURL:url 
        placeholderImage:nil 
         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
           if (error) { 
            self.imageView.image = [UIImage imageNamed:@"ico_placeholder"]; 
           } else { 
            self.imageView.image = image; 
           } 
}]; 

は、あなたたちは、これが役に立つことを願っ。

+1

あなたは下向き投票をするために直面​​している問題を教えてください。私は助けることができるかもしれません。ありがとう –

4

:画像検索が成功かどうかを完了するたびに

使用ブロック

ブロックでは、あなたは画像のダウンロードの進行状況と について通知することができます。

// Here we use the new provided sd_setImageWithURL: method to load the web image 
スウィフトのため

:あなたはプレースホルダー属性にnilを渡すと完了を処理することによって自分自身をブロックすることを行うことができますObjective-Cの

[cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
         placeholderImage:nil 
          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
            if (error) { 
             self.imageView.image = [UIImage imageNamed:@"placeHolderImage"]; 
            } 
           }]; 
+1

これをテストするための迅速な3バージョンを入手できますか? –

+2

私も自分でやった。よくできました。あなたは私の質問が好きで、適切な投票をしてください。 –

1

ため

cell.imageView.sd_setImageWithURL(url, placeholderImage:nil, completed: { (image, error, cacheType, url) -> Void in 
      if (error) { 
       // set the placeholder image here 

      } else { 
       // success ... use the image 
      } 
     }) 

。このよう

は:

[self.imageView sd_setImageWithURL:self.imageURL 
        placeholderImage:nil 
          options:nil 
          progress:nil 
         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
          if(!error) { 
           self.imageView.image = image; 
          } else { 
           self.imageView.image = [UIImage imageNamed:@"placeHolder"]; 
          } 
          }]; 

私はそれを試していません。それがあなたのために働くかどうか試してみてください。スウィフト3用

+0

希望の背景色がすでに –

+1

に設定されていると仮定すると、スウィフト3バージョンがより役立ちます。 :) –

+0

申し訳ありませんが、私はそれを助けることはできません、私はスウィフトでコード化していません –

関連する問題