gpt4 book ai didi

ios - 滚动时收集 View 可重复使用的单元格问题

转载 作者:行者123 更新时间:2023-12-01 22:00:31 26 4
gpt4 key购买 nike

我正在使用 Collection View 来显示列表中的 gif。
现在在向上或向下滚动 Collection View 的单元格时面临单元格可重用问题。

点赞项目A 第一个 放入列表和项目 B 第二放在列表中。
但是当我在 Collection View 中滚动数据时。元素的位置放错了地方。就像某个时间 itemA 排在第 5 位或有时在列表中的任何位置。
我知道我认为这是可重复使用的电池的用途,但不知道如何解决这个问题。
请帮忙。

Collection View cellForItemAt

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "GifCell", for: indexPath as IndexPath) as? GifCell else {
fatalError()
}

if gifArr.count > 0 {

let urlString = self.gifArr[indexPath.row]
let url = URL(string: urlString)!

DispatchQueue.global().async {
let imageData = try? Data(contentsOf: url)
let imageData3 = FLAnimatedImage(animatedGIFData: imageData) // this is the 3rd pary library to show the gifs on UIimageview's
DispatchQueue.main.async {
cell.imageView.animatedImage = imageData3
cell.textLabel.text = String(indexPath.row)
}
}
}
return cell
}

最佳答案

GifCell你可以实现 prepareForReuse()方法:

Performs any clean up necessary to prepare the view for use again.


override func prepareForReuse() {
super.prepareForReuse()
imageView.animatedImage = nil
textLabel.text = ""
}

备注 :
此时,每次 cellForItemAt方法被调用,url 将被重新加载,所以稍后,您可能想要找到一种方法来缓存图像而不是继续重新加载它们。

关于ios - 滚动时收集 View 可重复使用的单元格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60149156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com