UICollectionview 带有动态数据的自定义布局

Posted

技术标签:

【中文标题】UICollectionview 带有动态数据的自定义布局【英文标题】:UICollectionview Custom layout with Dynamic data 【发布时间】:2019-10-14 13:31:08 【问题描述】:

我有一个自定义的 CollectionViewFlowLayout,其中包含通过 REST API 传来的数千个动态分页数据。

我已经实现了Raywenderlich's Pinterest like layout。如果您已经知道单元格高度,那也没关系。但问题是,在我的数据中,图像大小和文本大小是完全动态的。

我正在尝试通过委托方法计算单元格高度,但它没有按预期工作。

另外,为新的 ui CollectionView Cells 重新计算单元格属性的最佳性能方法是什么?

【问题讨论】:

我相信后端能够提供图像比例。所以,图像不应该是一个问题。从后端接收时,可能会在背景上计算文本大小。 【参考方案1】:

您需要转到您的单元子类并像这样覆盖preferredLayoutAttributesFitting(_:)

override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes 

                // Ensures that cell expands horizontally while adjusting itself vertically.
                let preferredSize = systemLayoutSizeFitting(layoutAttributes.size, withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel)

                layoutAttributes.size = preferredSize
                return layoutAttributes
    

【讨论】:

以上是关于UICollectionview 带有动态数据的自定义布局的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 中的自定义布局

带有自定义标题的 UICollectionView

UICollectionView 布局,带有用于 SearchBar 的部分标题和用于标题的另一个动态部分标题

UICollectionView 上的自定义动画重新加载数据

当 UICollectionView 位于 iOS 中的自定义 TableViewCell 中时,如何为 UICollectionView 实现委托和数据源方法,目标 C

UICollectionViewCell 内带有 UITableView 的自定义单元格