每个部分的 UICollectionView 布局

Posted

技术标签:

【中文标题】每个部分的 UICollectionView 布局【英文标题】:UICollectionView layout for each section 【发布时间】:2016-07-21 00:51:16 【问题描述】:

我需要将我的UICollectionView 部分之一设置为水平滚动,而UICollectionView 的其余部分则垂直滚动。

例如:SECTION 1下面应该从左到右滚动,整个UICollectionView上下滚动。

|               |   ^
| [ SECTION 0 ] |    
|               |   |
| [   <-->    ] |   |
| [ SECTION 1 ] |   |
| [   <-->    ] |   |
|               |   |
| [ SECTION 2 ] |
|               |   ˅

您不能在UICollectionViewCell 中嵌套新的UICollectionView,所以这是不可能的。我也不想使用UITableViewUICollectionView,因为我需要大多数其他部分是网格布局。

关于如何实现这一点的任何想法?

【问题讨论】:

您是否尝试过使用滚动视图作为主视图并在滚动视图中添加第 0 ,1, 2 部分(集合视图) 【参考方案1】:

采用 Tableview 它将 scroll vertically 然后在 UITablviewCell 中采用 UIView(这样做是为了使 collectionview 和 tableview 的委托不冲突) ,使用 UIView 获取 UICollectionview 并使其滚动 水平。因此您可以轻松实现。

UITableView->UITbaleviewCell->在Tableviewcell中一个UIView->然后 UICollectionview->UICollectionviewCell

【讨论】:

不想使用表格视图(减少委托代码)。我正在考虑而不是仅仅为这一部分构建 UIViews 并将它们水平放置在滚动视图上。可能会奏效。 是的,这也可以是解决方案,但是您仍然必须管理滚动视图的代表。您可以遵循的方法是自定义集合视图布局 我在考虑布局,但不确定 atm 如何为集合视图的每个部分设置自定义布局¯_(ツ)_/¯ 所以你有两个替代解决方案,使用它...:P【参考方案2】:

这比听起来容易(显然),但有两种方法可以做到这一点。

    忘记第 1 节,而是将该内容设置为节标题,该标题将包含一个水平滚动的 UIScrollView。然后在那里添加您的内容并将该滚动视图的 contentSize 设置为内容的大小,您就完成了。为需要在滚动视图中响应的任何项目设置 tapGestureRecognizers。

    将第 1 部分设为包含 UIScrollView 的单个单元格,就像上面的版本 1 一样。

这是一个很好的展示,我最近在概念证明中做了这个,但后来被废弃了,或者我可以为你发布一些代码。

【讨论】:

以上是关于每个部分的 UICollectionView 布局的主要内容,如果未能解决你的问题,请参考以下文章

具有特定于部分的布局和粘性标题的 UICollectionView

UICollectionView 的每个部分的独立滚动?

如何在单个列中设置每个 UICollectionView 部分

预先创建 UICollectionView 单元格 - 布局问题

UICollectionView 布局,带有用于 SearchBar 的部分标题和用于标题的另一个动态部分标题

多个装饰视图添加到 UICollectionView