如何快速在UICollectionView中使用SDWebImage正确加载图像

时间:2019-06-12 23:02:07

标签: swift uicollectionview uicollectionviewcell sdwebimage uicollectionreusableview

我正面临以下问题,我有一个自定义集合视图,在该视图中我从服务中获得的URL上传图像,目前一切正常,但有时在滚动或退出屏幕时返回,我的自定义集合视图已更改,无法正确加载,我看到了几篇文章,它们在不同情况下都存在相同的问题,但是试图得出的结论是我的问题是在使用 SDWebImage < / strong>库。我已经看到他们使用诸如prepareForReuse之类的方法将图像设置为nil,但我的问题仍然存在。

所以你第一次见到

enter image description here

然后第二次看起来像这样

enter image description here

这是我的代码

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemMenuFilterCollectionViewCell", for: indexPath) as! ItemMenuFilterCollectionViewCell
         cell.mImgProduct.image = nil
         cell.mImgProduct.sd_setImage(with: URL(string: mDataListProducts[indexPath.row].photo!), placeholderImage: UIImage(named: "placeholder.png"))

        cell.mTxtProductName.text = mDataListProducts[indexPath.row].shortName
        cell.mTxtBrand.text = mDataListProducts[indexPath.row].marca
        cell.mTxtStore.text = mDataListProducts[indexPath.row].tienda
        cell.mTxtPrice.text = mDataListProducts[indexPath.row].price
        cell.mRatingStar.rating = mDataListProducts[indexPath.row].valor?.toDouble() ?? 0

        return cell

    }

正如我所提到的,我认为我的问题是由libreta负责的,因为我评论了这段代码cell.mImgProduct.sd_setImage(with: URL(string: mDataListProducts[indexPath.row].photo!), placeholderImage: UIImage(named: "placeholder.png")) 一切正常,我想知道一种更好的方法,或者更正正在发生的事情。

在我的customviewcell的prepareforReuse中也有此功能,但仍然没有。

class ItemMenuFilterCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var mRatingStar: CosmosView!
    @IBOutlet weak var mImgProduct: UIImageView!
    @IBOutlet weak var mTxtProductName: UILabel!
    @IBOutlet weak var mTxtBrand: UILabel!
    @IBOutlet weak var mTxtStore: UILabel!
    @IBOutlet weak var mTxtPrice: UILabel!

    override func prepareForReuse() {
        self.mImgProduct.sd_cancelCurrentImageLoad()
        self.mImgProduct.image = nil
    }
}

0 个答案:

没有答案