微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UICollectionViewCompositionalLayout项目大小错误

如何解决UICollectionViewCompositionalLayout项目大小错误

我目前遇到的布局布局问题也可以在Apple's example-> ConferenceNewsFeedViewController中看到。项目高度设置为.estimated(100),宽度设置为.fractionalWidth(1.0)。在初始显示中,单元格未包装标签内容。仅当您开始滚动时,才更正单元格的布局。有人知道如何解决此问题吗?

这是不正确的布局:

incorrect layout

这是滚动后的布局:

correct layout

我知道可以使用以下内容“修复”它,但这听起来更像是一种肮脏的解决方法

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

对此有任何帮助。

最好, 卡斯滕

解决方法

您可以使用此方法设置单元格的大小。

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

}

,

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

  • CellSubclass:UICollectionViewListCell
    • CellContentView:UIContentView

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。