,所以我有自定义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)
,如果需要根据其大小拥抱收集视图的子视图的子视图,则可能需要为其设置相同的设置。例如,让我们在收集视图中带有标签,其大小会有所不同,您可能还需要设置标签的内容拥抱和阻力优先级。