繁体   English   中英

如何在Swift中显示SDWebimage作为背景色

[英]How to show SDWebimage for background Colour in Swift

SDWebImage是用于将URL转换为图像的出色库。 它的工作很棒。 但是,我有以下问题

//对于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”

谁能建议我解决此问题?

首先需要使用SDWebImageManager下载图像,然后在UIColor(patterImage:)构造函数中使用它。 请尝试以下代码:

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

发生这种情况是因为sd_setImage是一个UIImageView方法( eventImageView应该是UIImageView ), init(patternImage :)声明是:

init(patternImage image: UIImage)

这意味着patternImage参数是UIImage 而不是 UIImageView

为了解决这个问题,你应该首先加载图像视图,一旦装做你可以指定颜色是image的图像视图:

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

或(不带占位符):

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM