我希望UICollectionView(红色的)缩小到内容大小的高度,在这种情况下,UICollectionViewCells(黄色的)是因为有很多空白空间。我尝试使用的是:
override func layoutSubviews() {
super.layoutSubviews()
if !__CGSizeEqualToSize(bounds.size, self.intrinsicContentSize) {
self.invalidateIntrinsicContentSize()
}
}
override var intrinsicContentSize: CGSize {
return self.collection.contentSize
}
但return self.collection.contentSize
总是返回(width,0),因此它会缩小到高度30的值(尽管我在constaint> = 30的情况下在XIB文件中为高度设置的值)。
我建议以下内容:
- 向您的集合视图添加高度限制。
- 将其优先级设置为999。
- 将其常数设置为在情节提要板上合理可见的任何值。
- 将集合视图的底部相等约束更改为更大或相等。
- 将高度限制器连接到插座。
- 每次在集合视图上重新加载数据时,请执行以下操作:
您可能还想通过将集合视图添加到内容大小来考虑它的插图。
代码样例:
CGFloat height = myCollectionView.collectionViewLayout.collectionViewContentSize.height
heightConstraint.constant = height
self.view.setNeedsLayout() Or self.view.layoutIfNeeded()
说明:额外,如果您了解它,则不必阅读。明显!!
用户界面将尝试反映所有约束,而不管它们的优先级如何。由于高度约束的优先级较低(999),而底部约束的优先级大于或等于。只要将高度限制常数设置为小于父视图高度的值,集合视图就将等于给定的高度,从而实现两个限制。
但是,当高度约束常量设置为大于父视图高度的值时,将无法实现这两个约束。因此,将仅获得具有较高优先级的约束,该约束是更大或相等的底部约束。
以下只是经验的猜测。因此,它达到一个常数。但是,它还会尝试使其他未实现的较低优先级约束的结果UI中的错误尽可能低。因此,集合视图的高度将等于父视图的大小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句