gpt4 book ai didi

ios - 如何将 sizeForItemAt 放在后台线程上?

转载 作者:行者123 更新时间:2023-11-28 14:18:13 25 4
gpt4 key购买 nike

我正在尝试根据图片的纵横比以及其他因素来动态调整单元格的大小,以创建自定义布局。这些计算似乎减慢了我的应用程序的加载速度。我想将此进程移至后台线程。下面是该函数的代码。是否可以在后台线程上运行此函数以提供临时单元格大小,直到计算完成,以免降低应用程序的整体性能,谢谢您的帮助。

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

return self.collectionViewSizeCalculator!.sizeForPhoto(at: indexPath)
}

最佳答案

UICollectionView(或 UITableView)具有返回值的委托(delegate)和数据源方法必须具有在调用它的主队列上返回的值以及该返回值应该立即计算(或尽可能接近立即计算)。任何延迟都会导致 Collection View (或 TableView )滞后。

一种解决方案是将像元大小存储为数据模型的一部分。最初使用初始估计大小填充大小。让您的 sizeForItemAt 返回数据模型中当前的任何大小。

与此同时,在后台运行一个进程(针对所有单元格或根据需要为每个单元格单独执行此操作)以计算单元格的实际大小。当您返回实际值时,更新数据模型并在主队列中重新加载该单元格。

关于ios - 如何将 sizeForItemAt 放在后台线程上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52047803/

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