UICollectionViewCompositionalLayout 不正确的项目大小
Posted
技术标签:
【中文标题】UICollectionViewCompositionalLayout 不正确的项目大小【英文标题】:UICollectionViewCompositionalLayout incorrect item size 【发布时间】:2020-10-13 10:28:54 【问题描述】:我目前面临一个组合布局问题,这也可以在Apple's example -> ConferenceNewsFeedViewController 中看到。项目高度设置为.estimated(100)
,宽度设置为.fractionalWidth(1.0)
。在初始显示中,单元格没有包装标签内容。只有当您开始滚动时,单元格的布局才会得到纠正。有人知道如何解决这个问题吗?
这是错误的布局:
这是滚动后的布局:
我知道它可以通过以下方式“修复”,但这感觉更像是一种肮脏的工作:
DispatchQueue.main.async
self.collectionView.collectionViewLayout.invalidateLayout()
对此的任何帮助表示赞赏。
最好, 卡斯滕
【问题讨论】:
嗨,Carsten,您知道 Apple 是否还没有解决这个问题吗?有没有我可以追踪的雷达票?在以前的版本没有这个问题之后,我在 Xcode 12.5 和 ios 14.6 中看到了这一点。谢谢 @dank_muffin 我从未跟进此事,抱歉 【参考方案1】:我自己也面临同样的问题。就我而言,我有以下设置:
CellSubclass:UICollectionViewListCell CellContentView:UIContentView在我的 CellContentView 中,我已经覆盖了 layoutSubviews
:
override func layoutSubviews()
super.layoutSubviews()
invalidateIntrinsicContentSize()
有时仍然会出现一些小故障,但这比加载时布局错误要好。
【讨论】:
【参考方案2】:您可以使用此方法设置单元格的大小。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: width, height: height)
【讨论】:
我想使用带有自定尺寸单元格的组合布局。在这里设置明确的大小无济于事以上是关于UICollectionViewCompositionalLayout 不正确的项目大小的主要内容,如果未能解决你的问题,请参考以下文章