gpt4 book ai didi

swift - collectionViewLayout.collectionViewContentSize 获取 SIGABRT

转载 作者:行者123 更新时间:2023-11-28 14:34:38 29 4
gpt4 key购买 nike

我尝试按照此解决方案 (How to determine height of UICollectionView with FlowLayout) 来确定我的 UICollectionViewLayout 的大小,以便相应地调整单元格的大小。我下面的代码调用了 collectionViewContentSize,它在调用时抛出错误:

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


let frameWidth = collectionViewLayout.collectionViewContentSize.width
let maxCellWidth = (frameWidth) / (7.0/6.0 + 6.0)
let frameHeight = collectionViewLayout.collectionViewContentSize.height
let maxCellHeight = frameHeight

let cellEdge = maxCellWidth < maxCellHeight ? maxCellWidth : maxCellHeight

return CGSize(width: cellEdge, height: cellEdge)
}

错误是线程 1 SIGABRT。

知道为什么这不起作用吗?

最佳答案

你可能会得到无限递归,因为为了知道 Collection View 的内容大小,它需要知道每个项目的大小。 Collection View 调用 sizeForItemAt 的全部原因是确定 Collection View 的内容大小。

好消息是您没有理由询问 Collection View 的内容大小。相反,根据 Collection View 本身的大小而不是其内容大小来确定项目的大小。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let frameWidth = collectionView.frame.width
let maxCellWidth = (frameWidth) / (7.0/6.0 + 6.0)
let frameHeight = collectionView.frame.height
let maxCellHeight = frameHeight

let cellEdge = maxCellWidth < maxCellHeight ? maxCellWidth : maxCellHeight

return CGSize(width: cellEdge, height: cellEdge)
}

关于swift - collectionViewLayout.collectionViewContentSize 获取 SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50980101/

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