表视图行中集合视图的同步水平滚动

Posted

技术标签:

【中文标题】表视图行中集合视图的同步水平滚动【英文标题】:Synchronized horizontal scrolling of collection views in tableview rows 【发布时间】:2014-09-22 21:27:25 【问题描述】:

我正在尝试在表格视图中同步所有集合视图中的滚动(请参见下面的图片链接):

示例图片: http://postimg.org/image/dduhr89e5/

我找到的示例说明了如何通过识别两个单独的滚动视图来同步它们。但是,我不确定如何在表格视图中识别每个集合视图。可能有 1 个或数百个都需要同步。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

  if ([scrollView isEqual: theFirstScrollView])
  
        theSecondScrollView.contentOffset =
              CGPointMake(theFirstScrollView.contentOffset.x, 0);
  
  else
  
        theFirstScrollView.contentOffset = 
              CGPointMake(theSecondScrollView.contentOffset.x, 0);
  

【问题讨论】:

所有收藏视图的宽度是否相同? 【参考方案1】:

假设每个集合视图都有自己的单元格,并且集合视图的宽度相似(或者至少你已经弄清楚了那部分),这是我将使用的方法:

1) 让您的 VC 成为所有集合视图的委托。

2) 当它们中的任何一个滚动时,通过 TableViews visibleCells 并设置单元格 collectionView 的内容偏移量。另外,将内容偏移量存储在 viewController 中。

3) 每当一个新单元出列时,将内容偏移设置为 VC 中最后存储的值。

【讨论】:

谢谢@Acey,我现在要试试这个。我假设我通过 TableView 的 visibleCells 运行快速枚举来设置每个人的 contentOffset,这是正确的吗? 是的。假设您使用的是自定义子类,您可能需要从每个单元格中公开 collectionView。 你是男人中的神阿西。我预计该功能需要很长时间才能添加。非常感谢!

以上是关于表视图行中集合视图的同步水平滚动的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 Swift Xcode 的视图控制器中集成水平滚动视图

滚动水平表视图时淡入淡出动画

UICollectionView - 基于水平滚动更新数组 indexPath

有没有更好的方法在不同的表格视图之间进行水平滚动?

在拆分视图中同步垂直/水平滚动

同步动画以在表格视图中的集合视图中滚动