gpt4 book ai didi

ios - 从 Firebase 的 URL 加载图像时,CollectionsView 性能不稳定

转载 作者:行者123 更新时间:2023-11-28 16:07:53 24 4
gpt4 key购买 nike

从 Firebase 加载图像然后将其填充到单元格中时,性能似乎不稳定。我想这可能是因为图像没有被缓存。

这个位于viewDidLoad()之后立即从返回的搜索结果中收集URL的函数中

let databaseRef = FIRDatabase.database().reference()

databaseRef.child("palettes").queryOrdered(byChild: "top").queryEqual(toValue: "#000000").observeSingleEvent(of: .value, with: { (snapshot) in


if let snapDict = snapshot.value as? [String:AnyObject]{

for each in snapDict as [String:AnyObject]{

let URL = each.value["URL"] as! String
self.URLArray.append(URL)

print(self.URLArray)
}
}
})

这是填充单元格的函数:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
let textLabel = cell.viewWithTag(2)

let ootdImage = cell.viewWithTag(4) as! UIImageView

if let url = NSURL(string: self.URLArray[indexPath.row]) {
if let data = NSData(contentsOf: url as URL){
ootdImage.image = UIImage(data: data as Data)
}
}

// display images from the dataArray.
textLabel?.backgroundColor = averageColor

return cell

不用担心 collectionsView.reloadData(),目前,我已经将其设置为必须手动点击按钮才能重新加载数据,但我仍然不明白为什么会有滚动滞后,特别是因为所有数据都已收集。

最佳答案

性能低下是因为您从主线程下载每个图像,这会阻塞 UI。异步下载图像并更新 Collection View 单元格,这将解决性能问题。

每当您滚动时,与单元格关联的每个图像都会在主线程中下载并导致滚动延迟。

关于ios - 从 Firebase 的 URL 加载图像时,CollectionsView 性能不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39972668/

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