防止每个卷轴上下载图像

时间:2016-08-11 16:23:25

标签: swift firebase sdwebimage firebase-storage

我试图阻止我的tableview在每次上下滚动中从 Firebase 加载图片。我该怎么办?我甚至不明白为什么会这样做,因为我正在使用名为“MSWebImage”的第三方库,它应该cache在某处。

我还尝试了名为“KingFisher”的第三方库,它做了同样的事情。

编辑:我注意到,在向上滚动的同时,每个滚动条都会缓存到内存中,但磁盘为零

这是我用来获取图片的代码:

let productImageref = productsValue[indexPath.row]["Products"] as? String

FIRStorage.storage().reference().child("\(productImageref!).png").downloadURLWithCompletion({(url, error)in
            if error != nil{
                print(error)
            }else{
         cell.snusProductImageView.sd_setImageWithURL(url)
    }
})

2 个答案:

答案 0 :(得分:0)

也许您可以使用touchesBegan或touchesMoved之类的触摸方法,然后每次调用touchesMoved方法时调用self tableView.reloadData()。

答案 1 :(得分:0)

也许您应该在viewDidLoad中下载数据,以便只卸载一次。

存储在字典https地址中。

func convertGsToHttps (keySection: String, pathGsToConvert: String) {

    FIRStorage.storage().referenceForURL(pathGsToConvert).downloadURLWithCompletion({(url, error)in
        if error != nil{
            print(error)
        }else{
            self.urlHttpsSection.updateValue(url! , forKey: keySection)

        }
    })
}

然后在cellForRowAtIndexPath

let setImage = section.value as! String //Getting the key to my dictionary
    //loadData()




    for clave in urlGsSecciones.keys where clave == setImage
    {
        if setImage == clave
        {
            cell.imageCellBackground.contentMode = UIViewContentMode.ScaleAspectFill
            cell.imageCellBackground.clipsToBounds = true
            let urlHttps = urlHttpsSection[setImage]
            print("urlHttps", urlHttps)
            cell.imageCellBackground.sd_setImageWithURL(urlHttps)
        }
    }

**