UICollectionView 中的垂直和水平滚动方向

Posted

技术标签:

【中文标题】UICollectionView 中的垂直和水平滚动方向【英文标题】:Both Vertical and Horizontal Scroll Direction in UICollectionView 【发布时间】:2016-04-07 10:50:50 【问题描述】:

我遇到了在同一个 UIViewController 中的 UICollectionView 中同时使用垂直和水平滚动方向的问题。

到目前为止,我所做的首先是一个 UICollectionView。在 UICollectionView 顶部,我有一个 Collection Reusable View。我的解决方案是在可重用视图中实现另一个 UICollectionView,但在运行项目时出错。

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the view returned from -collectionView:viewForSupplementaryElementOfKind:atIndexPath (UICollectionElementKindSectionHeader,<NSIndexPath: 0xc000000000000016> length = 2, path = 0 - 0) was not retrieved by calling -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath: or is nil ((null))

所以我实际上在一个 UIViewController 中以相同的 Delegate 和 Datasource 方法处理两个不同的 CollectionView。

使用 UITablewView 构建它是更好的方法吗?比将 collectionviews 添加到不同的 UITableViewCells 吗?还是从一个 UIScrollView 开始,然后向滚动视图添加两个不同的 UICollectionView 更好?

【问题讨论】:

【参考方案1】:

AFTabledCollectionView

参考上面的示例代码

在此示例代码中。 UITableView 在那里,UITableviewCell 包含 UICollectionView(水平方向)。

以上示例代码中有关您的问题的更多详细信息

取一个有 2 个部分的“UITableView”。它的第一部分有“UICollectionView”,第二部分有“UICollectionView”。

【讨论】:

正如我试图在图片中解释的那样,我想同时使用垂直和水平滚动。顶部应为轮播,其余为普通垂直 UICollectionView。 好的,谢谢,但是是否可以将“第二个”UITableViewCell 的大小调整为与 UICollectionView 内的 CollectionViewCells 的数量一样大?我尝试使用 UITableViewAutomaticDimension 但这当然行不通,因为即使有很多单元格, UICollectionViewCell 也不会更大。 @payal-maniyar 为 tableview 设置约束并给出如下代码行的高度:if(indexPath.section &gt; 0) return 210.0; else return 188; 这样你就不会遇到任何问题。 是的,如果看起来是正确的,我当然会这样做。但是为什么我要在第 2 节中将高度设置为 188? @payal-maniyar 我希望它是动态的。应该和集合视图中的所有单元格一样大。所以 188 感觉很小..? 我给你举个例子。您可以设置任意高度。

以上是关于UICollectionView 中的垂直和水平滚动方向的主要内容,如果未能解决你的问题,请参考以下文章

将单元格高度固定到 UICollectionView 高度

在水平和垂直两侧滚动 UICollectionView

如何滚动到 UICollectionView 的中心(水平和垂直)

将水平和垂直 CAGradientLayer 蒙版应用到 UIScrollView/UICollectionView

如何使 UICollectionView 的高度可自动调整和滚动?

水平和垂直滚动 Usign UICollectionView 和 ScrollView