让嵌套的 UICollectionViews 自己调整大小?
Let nested UICollectionViews size themselves?
我有一个布局,它以不同的方式显示 3 种类型的数据:我有类型,它们相互重叠,我有位置,它们也相互重叠,然后我有时间,接下来流动给对方,并拿走他们需要的所有 space。一个例子:
我考虑过将其设置为 3 UICollectionViews
,他们试图在其中调整自己的大小。但是我已经尝试(但失败了)这样做。
所有单元格都是 xibs,我在添加数据时设置了约束。这是我在单元格中设置数据时执行的代码:
hallsCollectionView.dataSource = TheaterHallCollectionViewDataSource(ticketType)
hallsCollectionView.reloadData()
hallsCollectionView.collectionViewLayout.invalidateLayout()
hallsCollectionView.setNeedsLayout()
hallsCollectionView.layoutIfNeeded()
hallsCollectionViewHeightConstraint.constant = hallsCollectionView.collectionViewLayout.collectionViewContentSize.height
layoutIfNeeded()
但是当我设置断点时,collectionViewContentSize
不正确,它总是只有一个项目时的高度,即使我在布局collectionviewcells之前设置了数据源。
所以我想我找到了我必须做的事情,我需要在超级视图上调用 layoutIfNeeded()
,另一件事是 UICollectionViewCell
仍然有它来自的 xib 的框架...
另一方面,我已将其从 3 层深移动到只有 2 层,因为我可以将 "type 1" 和 "type 2" header 简化为只是单元格。我目前将它作为每个部分中的一个额外单元格,但我可以看到自己在不久的将来将其更改为一个表格视图,因为它们更容易用于 header 个单元格,而且它们不需要宽度信息。
如果有人想向我解释为什么这些东西是这样的,请解释。
我有一个布局,它以不同的方式显示 3 种类型的数据:我有类型,它们相互重叠,我有位置,它们也相互重叠,然后我有时间,接下来流动给对方,并拿走他们需要的所有 space。一个例子:
我考虑过将其设置为 3 UICollectionViews
,他们试图在其中调整自己的大小。但是我已经尝试(但失败了)这样做。
所有单元格都是 xibs,我在添加数据时设置了约束。这是我在单元格中设置数据时执行的代码:
hallsCollectionView.dataSource = TheaterHallCollectionViewDataSource(ticketType)
hallsCollectionView.reloadData()
hallsCollectionView.collectionViewLayout.invalidateLayout()
hallsCollectionView.setNeedsLayout()
hallsCollectionView.layoutIfNeeded()
hallsCollectionViewHeightConstraint.constant = hallsCollectionView.collectionViewLayout.collectionViewContentSize.height
layoutIfNeeded()
但是当我设置断点时,collectionViewContentSize
不正确,它总是只有一个项目时的高度,即使我在布局collectionviewcells之前设置了数据源。
所以我想我找到了我必须做的事情,我需要在超级视图上调用 layoutIfNeeded()
,另一件事是 UICollectionViewCell
仍然有它来自的 xib 的框架...
另一方面,我已将其从 3 层深移动到只有 2 层,因为我可以将 "type 1" 和 "type 2" header 简化为只是单元格。我目前将它作为每个部分中的一个额外单元格,但我可以看到自己在不久的将来将其更改为一个表格视图,因为它们更容易用于 header 个单元格,而且它们不需要宽度信息。
如果有人想向我解释为什么这些东西是这样的,请解释。