2017-11-09 5 views
0

SDWebImage ist eine großartige Bibliothek für die Konvertierung von URL zu Bild. Es funktioniert großartig. Aber ich habe folgende FrageSo zeigen Sie SDWebimage für den Hintergrund an Farbe in Swift

// Für Imageview, setzen wir wie

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"))) 

noch habe ich versucht, wie folgende

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

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

und seine zeigt folgende Fehler

Verwenden der unaufgelösten Kennung 'sd_setImage'

Kann mir jemand vorschlagen, wie ich das beheben kann?

+0

ein UIImage erstellen und dieses Bild Bild Muster –

+0

Ich habe versucht, das auch, zeigt Verwendung von ungelösten Bezeichner ‚sd_setImage –

+0

gelten @ AnilkumariOSentwickler wo ist 'scrollView'? – Jack

Antwort

0

Sie müssen SDWebImageManager verwenden, um das Bild zuerst herunterzuladen und dann in UIColor(patterImage:) Konstruktor zu verwenden. Try Code unten:

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

gibt es die Möglichkeit, diese Methode global zu machen, muss ich diese Methode mehrere Orte/Klassen –

0

Das ist passiert, weil sd_setImage ein UIImageView Methode (eventImageView sollte ein UIImageView sein), die init(patternImage:) Erklärung:

init(patternImage image: UIImage) 

was bedeutet, dass patternImage Parameter ist ein UIImagenichtUIImageView.

Um dies zu lösen, sollten Sie zuerst die Bildansicht laden, sobald der Laden Sie die Farbe zuweisen getan hat, könnten die image der Bildansicht sein:

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

Or (ohne Platzhalter):

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

anrufen, aber selbst ich versuchte, wie oben vorgeschlagen, rufen Sie während der Laufzeit aufrufen, zeigt –

+0

@AnilkumariOSdeveloper überprüfen Sie das Update ... –

+0

Wenn beide nicht an der gleichen Stelle sind, wie kann man das anrufen? und wenn seine verschiedenen Bilder, wird dies nicht funktionieren. –

0

sd_setImage(with ist anwendbar auf UIImageView

Struktur erstellen as -

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")!) 
      }) 
     } 
    } 

Gebrauch -

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

SDWebImage

+0

@AnilkumariOSDeveloper, wie Sie mit globaler Funktion benötigen. Ich habe eine Struktur erstellt, die Sie wiederverwenden können. – Jack

+0

Ich suche nur Bild, nicht imageview.setimage –

+0

'SDWebImage' ist' UIImageView' Erweiterung, es funktioniert als 'imageView.sd_', Sie können alle Details in GitHub Link überprüfen (in der Antwort zur Verfügung gestellt) – Jack

Verwandte Themen