2017-11-09 11 views
0

SDWebImageはイメージへの変換用の素晴らしいライブラリです。その素晴らしい仕事。しかし、私はSwiftの背景色のSDWebimageを表示するには

// ImageViewのために、私たちのような設定されている問題は、以下のいる

eventImageView.sd_setImage(with: URL(string: imageUrl), placeholderImage: UIImage(named: "placeholder.png")) 

    // but, for Image as UIColor, 

Showing compiler error if I use like following 

self.scrollView.backgroundColor = UIColor(patternImage: sd_setImage(with: URL(string: imageUrl), placeholderImage:UIImage(named: "placeholder.png"))) 

も、私は

let imageBG = sd_setImage(with: URL(string: image), placeholderImage: UIImage(named: "placeholder.png")) 

    self.scrollView.backgroundColor = UIColor(patternImage: imageBG) 

とその上映次のエラー

使用を次のように試してみました未解決の識別子 'sd_setImage'の

誰でもこの問題を解決する方法を提案できますか?

+0

1 UIimageを作成して、パターン画像 –

+0

にそのイメージを適用する私は、あまりにも、未解決の識別子の使用を示す「sd_setImage –

+0

@みましたAnilkumariOSdeveloperは 'scrollView'ですか? – Jack

答えて

0

SDWebImageManagerを使用して最初に画像をダウンロードしてから、UIColor(patterImage:)コンストラクタで使用する必要があります。以下 試行コード:UIImageView方法は、(eventImageViewUIImageViewなければならない)sd_setImageため

SDWebImageManager.shared().loadImage(with: URL(string: imageUrl), options: [], progress: nil, completed: { (image, data, error, cacheType, success, url) in 
        DispatchQueue.main.async { 
         guard let image = image else {        
          return 
         } 
         self.scrollView.backgroundColor = UIColor(patternImage: image) 
        } 
       }) 
+0

このメソッドをグローバルに作成する可能性があるので、このメソッドを複数の場所/クラスと呼びます。 –

0

だ起こり、init(patternImage:)宣言がある:patternImageパラメータがUIImageであることを意味する

init(patternImage image: UIImage) 

notUIImageViewです。

eventImageView.sd_setImage(with: URL(string: imageUrl), placeholderImage: UIImage(named: "placeholder.png")) { (image, error, cache, url) in 
     self.scrollView.backgroundColor = UIColor(patternImage: image) 
} 

か(プレースホルダなし):

これを解決するには、最初のロードが完了したら、あなたがイメージビューのimageように色を割り当てることができ、画像ビューをロードする必要があり

eventImageView.sd_setImage(with: URL(string: imageUrl)) { (image, error, cache, url) in 
     self.scrollView.backgroundColor = UIColor(patternImage: image) 
} 
+0

しかし、上記のように呼び出すと、実行時間を呼び出すときにnilが表示されます。 –

+0

@AnilkumariOSdeveloperが更新を確認します... –

+0

両方が同じ場所にない場合、これを呼び出す方法は?その異なるイメージの場合、これは動作しません。 –

0

sd_setImage(with構造体を作成しUIImageView

に適用されます -

struct ImageSetter { 
     static func setImage(scrollView: UIScrollView,myImageView: UIImageView,imageUrl: URL,placeHolderImage: UIImage){ 
      myImageView.sd_setImage(with: imageUrl, placeholderImage: placeHolderImage, options: [], completed: { (imageBackground, error, cache, url) in 
       scrollView.backgroundColor = UIColor.init(patternImage: imageBackground ?? UIImage(named: "place-holder-image")!) 
      }) 
     } 
    } 

使用 -

ImageSetter.setImage(scrollView: scrollView, myImageView: testImageView, imageUrl: url, placeHolderImage: image) 

SDWebImage

+0

グローバル関数で必要な@AnilkumariOS開発者。私はそれを再利用できる構造体を作成しました。 – Jack

+0

私はimageview.setimageではなくimageのみを探しています。 –

+0

'SDWebImage'は' UIImageView'拡張で、 'imageView.sd_'として動作します.GitHubのリンク(回答で提供されています)のすべての詳細を確認できます – Jack

関連する問題