所以我有自定义自定义UICollectionViewCells
,这是自我调整大小。
现在我需要UICollectionView
包含它的内容,而没有确切的预定义大小。就像android linearLayout
包含它的内容或任何WPF
面板一样。
我怎样才能做到这一点?
问题是我希望UICollectionView
自己测量并包装它的内容。我将在代码中创建它并将其作为子代添加到代码中的另一个视图。
我正在使用flowLayout
。
有什么建议吗?
编辑: 附加的示例项目,仅包含自定义集合视图 https://monosnap.com/file/9Y78XqcwAUNFxCo382u3bTr7CDS77F
答案 0 :(得分:0)
您可以检查collectionView的边界大小,并相应地更新容器的高度。你可能需要覆盖一些api来更新它。
答案 1 :(得分:0)
您应该尝试设置集合视图流布局的estimatedItemSize:
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.estimatedItemSize = CGSize(width: 1, height: 1)
}
答案 2 :(得分:0)
如果需要,您应该尝试为collectionView及其子视图设置内容拥抱优先级和内容压缩阻力优先级。
这可以通过storyboard / 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)
如果需要根据它们的大小来拥抱它们,则可能需要为collectionView的子视图设置相同的内容。 例如,让我们看看你的collectionView中的标签大小会有所不同,你可能需要为标签设置内容拥抱和阻力优先级。