ios - 嵌套多个 CollectionView

标签 ios swift uiview uiscrollview uicollectionview

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

enter image description here

层次结构如下:

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

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

enter image description here

整个架构图是:

enter image description here

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

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

最佳答案

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

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 View 是一个简单的 Collection View ,具有垂直滚动并包含 n 个单元格;

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

其他需要考虑的事情:

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

关于ios - 嵌套多个 CollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56238338/

相关文章:

ios - 从另一个值创建新的字典

ios - 我不能在 switch 内沮丧吗? ( swift 3)

ios - 如何在一个 UIViewController 中控制多个相同的 UIView

ios - 让触摸通过 UIView 或 UIWindow

ios - 委托(delegate)不解雇 ios

ios - 如何通过gcdwebserver获取本地html文件

ios - 方法不会覆盖其父类(super class)中的任何方法

arrays - Swift - NSDictionary 多维

ios - 长按按钮显示 UIView

iphone - NSOperation mainQueue 问题