gpt4 book ai didi

swift - 仅将 sizeForItemAt 应用于一个 collectionView

转载 作者:行者123 更新时间:2023-11-30 10:42:31 25 4
gpt4 key购买 nike

我正在使用 sizeForItemAt 设置一个 View Controller 的单元格大小,但似乎我也必须为其他 CollectionView 返回一个结果,问题是我没有其他 CollectionView 的大小值,因为它是在 Storyboard中定义的。我正在尝试这个:

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

if categorie_cv == collectionView {
let size: CGSize = categorie[indexPath.row].size(withAttributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 17.0)])
return CGSize(width: size.width + 40.0, height: categorie_cv.bounds.size.height)
} else if collectionView == risultati {

return THIS VALUE IS SET IN THE STORYBOARD
} else {
return THIS VALUE IS SET IN THE STORYBOARD
}
}

最佳答案

不,不幸的是,您无法告诉它自动使用从其布局派生的元素的固有大小。

但是,如果您的布局确实允许通过 AutoLayout/其内容明确配置内在大小,则可以调用 UIView.intrinsicContentSize,可能与 layoutIfNeeded 混合> 打电话。但我并不确信该解决方案 100% 有效。

如果我是你,我不会寻求分配委托(delegate)和实现 sizeForItemAt 的方法,而是在单元本身的问题上定义这个大小。

顺便说一句,实际上,让单元格确定其内容大小有点“结果不会像您预期的那样”。这对于 UITableView 来说非常有用且合乎逻辑,但是 UICollectionView 的布局计算最好通过更简单的计算方法来确定。

也就是说,将宽度计算为collectionView的边界宽度的一半并且等于高度是很便宜的 - 而不是使用非常动态的内容压缩规则和约束优先级让内容自由布局自己评估。通常,让所有单元格在纵横比、宽度或高度方面完全没有共同点,实际上往往会输出不良结果。

关于swift - 仅将 sizeForItemAt 应用于一个 collectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56481393/

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