Ios 在垂直堆栈视图中具有自动项目大小的水平分页UICollectionView?

Ios 在垂直堆栈视图中具有自动项目大小的水平分页UICollectionView?,ios,swift,uicollectionview,uikit,ios12,Ios,Swift,Uicollectionview,Uikit,Ios12,我有一个主垂直堆栈视图(第1帧),它有一个带有流布局的水平分页集合视图(CollectionView),它有两个单元格(Cell)。每个单元格都有一个由两个标签(标题、说明)组成的垂直堆栈视图 有没有办法让最高的单元格决定集合视图的高度,而主堆栈视图的宽度决定单元格的宽度 默认情况下,当我使用layout.estimatedItemSize=UICollectionViewFlowLayout.automaticSize(似乎它不会“继承”单元格高度)时,集合视图不可见 目前,我通过为集合

我有一个主垂直堆栈视图(第1帧),它有一个带有流布局的水平分页集合视图(CollectionView),它有两个单元格(Cell)。每个单元格都有一个由两个标签(标题、说明)组成的垂直堆栈视图

有没有办法让最高的单元格决定集合视图的高度,而主堆栈视图的宽度决定单元格的宽度


默认情况下,当我使用
layout.estimatedItemSize=UICollectionViewFlowLayout.automaticSize
(似乎它不会“继承”单元格高度)时,集合视图不可见

目前,我通过为集合视图设置一个固定高度来解决这个问题,并在
集合视图(\uuu:layout:sizeForItemAt:)
(单元格是灵活的)。

因为集合视图(和表视图)没有
内部contentsize
,如果没有适当的约束,布局引擎无法知道集合的正确大小。需要一个子类来提供此属性

在您的子类中:


重写变量intrinsicContentSize:CGSize{
返回CGSize(self.contentSize.height,self.superview!.bounds.width)
}
此外,在重新加载数据时,不要忘记使内容大小无效:


重写func重载数据(){
super.reloadData()
self.invalidateIntrinsicContentSize()
}

要更详细地了解intrinsicContentSize check Apple的内容是静态的,我认为简单地使用
UIScrollView
在这里是一个非常可行的选择(因为集合视图的动态性质不是必需的)。集合视图可以是嵌入到滚动视图中的堆栈,然后可以在初始化时简单地设置维度之间的包含。

是否尝试让单元格的内容定义集合视图的高度?您的单元格有一个“几个标签的堆栈视图”。。。你是说垂直堆叠视图吗?所有单元格的高度都一样吗?或者您希望您的水平集合视图单元格具有不同的高度?@DonMag感谢您回来!是的,最高的单元格应该定义集合视图的高度。是的,带标签的堆栈视图是垂直的(我也会更新这个问题)。你有多少个单元格?就几个?或者可能是“很多”?@DogMag添加了一个类似于我将要做的事情的速写。对于我当前的用例,只有3个单元格(带有静态内容),但我正在寻找一种可扩展的方法。@DonMag我澄清了这个问题,也许这有助于回答这个问题。