嵌套多个 CollectionView

Nesting Multiple CollectionView

我正在构建以下列方式表示的布局。

层次结构如下:

view
|
|__CollectionView (CV1), vertical scroll
         |__ CV1.SimpleCell1
         |__ CV1.SimpleCell ...
         |__ CV1.SimpleCell 9
         |
         |__CV1.Complex
                |
                |__ScrollView, horizontal scroll
                        |
                        |__CollectionView2 (CV2), horizontal scroll
                        |           |
                        |           |__n Titles
                        |
                        |__CollectionView3 (CV3), vertical scroll only
                                    |
                                    |__n images

有一个带有垂直滚动的主集合视图,其 header 是一张图像,并且有几个具有正常视觉效果的简单单元格。在大约 9 个单元格之后,我想要视图中的一部分,在该视图中,用户会看到另一个可以分页的滚动条,或者是自由形式的水平滚动条,它有一个标题和一个分配给该标题的 collecitonview(由图像组成)。现在用户应该能够来回滚动并仍然垂直滚动以访问更多图像。下面是相同的表示。 我真的无法在这里弄清楚视图的正确可能实现。此外,如果我在 parent collectionview 单元格中嵌入动态 collectionview,我不确定高度将如何动态变化。

整个架构图是:

我真的很期待一些指导。我一直为此疯狂,非常感谢任何帮助。

谢谢。如果需要,请告诉我更多信息。

按照你说的,我会做这样的事情;可能不准确,但这是主要思想。

view
|
|__CollectionView Vertical Scrolling or TableView
         |
         |__CV1.Simple Cell
         |__ …
         |__CV1.Simple Cell
         |
         |__CV1.Complex Cell
                |__CollectionView - Titles - Horizontal scroll (no interaction)
                |         |
                |         |__n Title Header Cell
                |
                |__CollectionView - Images - Horizontal scroll
                          |
                          |__n Image Cell

因此,外部 collection 视图是一个简单的 collection 视图,具有垂直滚动并包含 n 个单元格;

  • Complex Cell 基本上是包含水平内容的单元格;无需使用 UIScrollView,因为我们将使用两个水平 UICollectionView,一个包含 headers('One','Second'...),另一个包含图片;设置水平滚动可以在 storyboard/xib 或 collectionView.collectionViewLayout as? UICollectionViewFlowLayout)?.scrollDirection = .horizontal
  • 中完成
  • Complex Cell 是两个 collection 视图的 dataSourcedelegate
  • Title Collection View必须有isUserInteractionEnabled = false(用户不能用手指滚动headers);
  • 目标是根据 Image Collection View 滚动 Title Collection View;你也许可以使用 scrollViewDidScroll 这是 UICollectionViewDelegate 的一种方法(记住 UICollectionViewDelegate 扩展了 UIScrollViewDelegate

其他需要考虑的事项:

  • Complex Cell 应该有一个固定大小(在这种情况下可能是非常复杂的句柄动态大小)
  • 您可以通过使用 UITableView 而不是 UICollectionView 来简化垂直滚动,但这将不允许您使用 Simple Cell[=44 的网格布局=]