自定义UICollectionView包裹其自我尺寸的单元格



,所以我有自定义UICollectionViewCells,它们是自我尺寸的。

现在,我需要UICollectionView包装它的内容,而无需确切的预定义尺寸。像Android linearLayout一样,它的内容或WPF面板中的任何一个。

我该如何实现?

问题是我想要用UICollectionView自身测量并包装它的内容。我将在代码中创建它,然后从代码中添加到另一个视图中。

我正在使用flowLayout

有什么建议?

编辑:附加的样本项目,仅包含自定义收集视图https://monosnap.com/file/9y778xqccwaunfxco382u3btr7cds77f

您可以检查集合视图的边界大小并相应地更新容器的高度。您可能需要覆盖一些API才能更新此信息。

您应该尝试设置收集视图流布局的估计数字:

if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
    flowLayout.estimatedItemSize = CGSize(width: 1, height: 1)
}

来源:https://medium.com/@wasinwiwongsak/uicollectionview-with-autosizing-cell-using-using-autolayout-ios-ios-ios-9-10-84ab5cdf35a2

您应该尝试设置CollectionView的内容和内容压缩电阻的优先级,并在需要的情况下使用。

这可以通过故事板/XIB中的大小检查器来实现,但是当您使用代码以实现相同的代码时。

// Hugging priority is given so that views are sized less than the estimated size.
collectionView.setContentHuggingPriority(1000, for: .vertical)
collectionView.setContentHuggingPriority(1000, for: .horizontal)
// Content Compression resistance is given so that views are not sized less than its size because of other constraints.   
collectionView.setContentCompressionResistancePriority(1000, for: .vertical)
collectionView.setContentCompressionResistancePriority(1000, for: .horizontal)

,如果需要根据其大小拥抱收集视图的子视图的子视图,则可能需要为其设置相同的设置。例如,让我们在收集视图中带有标签,其大小会有所不同,您可能还需要设置标签的内容拥抱和阻力优先级。

最新更新