首页 > 解决方案 > UICollectionViewCompositionalLayout 项目大小不正确

问题描述

我目前面临组合布局的问题,这也可以在Apple 的示例-> ConferenceNewsFeedViewController 中看到。项目高度设置为.estimated(100),宽度设置为.fractionalWidth(1.0)。在初始显示中,单元格没有包装标签内容。只有当您开始滚动时,单元格的布局才会得到纠正。有谁知道如何解决这个问题?

这是不正确的布局:

不正确的布局

这是滚动后的布局:

正确的布局

我知道它可以通过以下方式“修复”,但这感觉更像是一个肮脏的工作:

DispatchQueue.main.async {
            self.collectionView.collectionViewLayout.invalidateLayout()
        }

对此的任何帮助表示赞赏。

最好的,卡斯滕

标签: iosswiftuicollectionviewuicollectionviewlayoutuicollectionviewcompositionallayout

解决方案


我自己也面临同样的问题。就我而言,我有以下设置:

  • 细胞子类:UICollectionViewListCell
    • 单元内容视图:UIContentView

在我的 CellContentView 中,我已经覆盖了layoutSubviews

override func layoutSubviews() {
    super.layoutSubviews()
    invalidateIntrinsicContentSize()   
}

有时仍然会出现一些小故障,但这比加载时布局错误要好。


推荐阅读