2017-11-09 1 views
0

SDWebImage는 이미지 변환을위한 훌륭한 라이브러리입니다. 그 위대한 일. 그러나, 나는Swift에서 배경색을 나타내는 SDWebimage를 표시하는 방법

// 이미지 뷰를 들어, 우리는 같은 설정하는 문제 다음 한

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

하나있는 UIImage를 생성하고 패턴 이미지 –

+0

에 해당 이미지를 적용 나는 너무, 해결되지 않은 식별자 'sd_setImage –

+0

의 사용을 보여주는 시도 @로 AnilkumariOSdeveloper는 어디에서'scrollView'입니까? – Jack

답변

0

이미지를 먼저 다운로드 한 다음 UIColor(patterImage:) 생성자에서 사용하려면 SDWebImageManager을 사용해야합니다. 아래 try 코드하십시오 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) 

아닙니다UIImageView.

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(withUIImageView

구조체를 만들기에 적용 할 수있다

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가 아닌 오직 이미지만을 찾고 있습니다. –

+0

'SDWebImage'는'UIImageView' 확장이며,'imageView.sd_'로 작동합니다 .GitHub 링크 (대답에서 제공)에서 모든 세부 사항을 확인할 수 있습니다. – Jack

관련 문제