我有一个布局,它以不同的方式显示3种类型的数据:我有类型,它们彼此相互关联,我有位置,它们也在彼此之下,然后我有时间,它们流到每个另外,并占用他们需要的所有空间。一个例子:
我想过将其作为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之前设置了数据源。
答案 0 :(得分:0)
所以我觉得我发现了我必须做的事情,我需要在超级视图上调用layoutIfNeeded()
,另一件事是UICollectionViewCell
仍然有来自它的xib的帧。
另一方面,我把它从3级深度移到了2级,因为我可以简化"类型1"和"类型2"标题只是单元格。我目前在每个部分都将它作为一个额外的单元格,但是我可以看到自己在不久的将来将其改为桌面视图,因为它们更容易用于标题单元格,并且它们不需要信息他们的宽度。
如果有人想向我解释为什么这些事情就是这样,请做。