问题标签 [uicollectionviewcompositionallayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2772 浏览

ios - iOS 14.3 上的 UICollectionViewCompositionalLayout 错误

我在iOS 14.3上遇到了一个奇怪的布局问题,其中集合视图UICollectionViewCompositionalLayout在我的情况下与UICollectionViewDiffableDataSource. _UICollectionViewOrthogonalScrollerEmbeddedScrollView当您有一个正交部分之前有一个固有高度部分时,问题在于内部的错误位置。

幸运的是,我能够很容易地重现该问题。考虑拥有这个数据源:

对于每个部分,您创建以下布局:

打破布局的事情是同时进入.first部分itemSize和高度。groupSize.estimated

您可以在iOS 14.3上看到以下结果:乍一看布局在视觉上是正确的,但您立即意识到它已损坏,因为内部滚动视图位于错误的位置。这意味着水平滚动错误地发生在蓝色区域。

iOS 14.3 布局损坏

在 iOS 14.2 之前运行完全相同的代码,您将获得正确的布局。 正确布局

你怎么看这个问题?我是否遗漏了什么或者它可能是一个 UIKit 错误?

谢谢

0 投票
2 回答
270 浏览

ios - collectionview 全局标题不会将单元格向下推,而是保持在顶部

我有一个集合视图标题(蓝色)和单元格(红色)。我希望能够以编程方式显示/隐藏标题,但是当我以编程方式显示标题时,它会出现在单元格顶部(或使滚动视图下降一点)。我希望标题将整个滚动视图向下推,因此单击“切换标题”后我不必向上滚动。

在此处输入图像描述

我非常努力地为下面的问题重现最少的代码。请分享任何见解。

0 投票
1 回答
211 浏览

ios - 如何将 UICollectionViewController 的自定义初始化程序与 UICollectionViewCompositionalLayout 一起使用?

假设您想使用自定义初始化程序来实例化UICollectionViewController.

使用UICollectionViewFlowLayout,这很简单:

但是,UICollectionViewCompositionalLayout的指定初始化器需要一些参数,最重要的是 section 参数:

这意味着我必须在UICollectionViewController. 如果布局包含诸如枚举之类的部分标识符,那么它也必须在初始化程序中。如果你必须NSCollectionLayoutEnvironment在你的布局中包含,它也会成为问题。

我正在查看 Apple 的示例,所有示例都使用UIViewController而不是UICollectionViewController默认使用。尽管这些示例没有使用任何自定义初始化程序,但此方法确实通过允许我们在之后创建布局来解决上述问题:

您现在可以简单地使用UIViewController的自定义初始化程序。

UICollectionViewCompositionalLayout使用自定义初始化程序的最佳方法是什么?

0 投票
3 回答
1285 浏览

ios - Swift:如何选择返回集合视图部分的标题?

我有一个UICollectionViewDiffableDataSource这样的:

我像这样定义我的部分标题的布局:

最后,要返回我的标题,我有这个函数返回UICollectionReusableView如下:


很棒的是:我可以在UICollectionView.

我想要什么:如何选择不显示特定部分的特定标题?

当我尝试nil在以下函数中返回时:

我收到以下错误:


我对如何“可选地”返回一个部分的标题的唯一想法是注册另一个高度为零的标题视图,并在我根本不想返回任何标题时返回此标题。

但是对我来说,这似乎有点混乱,如果我可以nil在我不显示标题时返回,那会更干净。

我究竟做错了什么?


谢谢你的帮助!

0 投票
0 回答
186 浏览

ios - 将 NSCollectionLayoutBoundarySupplementaryItem 放在单元格的顶部

我无法UICollectionViewCompositionalLayout在单元格顶部添加页脚。具体来说,我想在我的页脚中有一个交互式控件(在我的例子中是一个 UIPageControl)。这是一个示例布局,

页脚的配置如下,

假设我的页脚中有一个按钮,我想点击它。我已更改页脚的 zIndex,因此它高于我部分中的其他视图。

上面代码片段的结果是按钮在单元格顶部可见,但不可点击。在视图调试器中进行一些检查后,很明显补充视图被添加到单元格之前的视图层次结构中,并且更改 zIndex 只会将图层移动到前面,而不是完整的视图。有没有办法改变视图在组合布局中的添加顺序?或者有没有其他方法可以将页脚视图带到单元格上方?

0 投票
0 回答
130 浏览

ios - UICollectionViewCompositionalLayout 使用自动布局等于项目高度

我正在使用 UICollectionViewCompositionalLayout 创建网格。每个单元格包含一个多行标签。我的目标是,当组/行中的一项增长时,该组/行中的所有其他项目都增长到相同的高度,例如在所附图片中,我希望第 2 行第 2 列和第 3 列中的单元格匹配包含 ("1000\ndetail") 的第一个单元格的高度。 在此处输入图像描述

我尝试了各种方法,例如将项目的高度设置为小数(1),但这会阻止多行。其他尝试(例如更改小组规模)也无济于事。请问如何设置我的 UICollectionViewCompositionalLayout 来实现我的目标?

收藏视图:

集合视图单元

0 投票
1 回答
54 浏览

swift - 将 UIPageControl 添加到 NSCollectionLayoutSection

所以,我正在开发一个具有如图所示结构的应用程序,其中一些部分水平滚动,正交滚动行为已发送到分页并且行为按预期工作,唯一的问题是我想那里有一个 UIPageControl:

在此处输入图像描述

我找到了几个解释如何更新 UIPageControl 的地方,如下所示:

但是他们都没有解释如何放置 UIPageControl,没有附加的视图,没有 .xib 或任何东西,只是一些流程。

0 投票
1 回答
323 浏览

ios - 具有估计高度的 UICollectionViewCompositionalLayout 嵌套组

我目前定义了以下组合布局:

这给了我以下布局:

当前布局

理想的情况是绿色单元格 (the heroItem) 具有一个应该领先的估计高度。紫色单元格 (the sideKickItem) 应与绿色单元格一样高。

我不确定为什么布局最终使用高度550作为最终高度,这使得紫色单元格的内容变得很大。

所以最后我希望布局如下图所示:

要求的布局

0 投票
0 回答
110 浏览

ios - 将 NSCollectionLayoutSupplementaryItem 放在包含组的底部

上下文:

我正在使用 UICollectionViewCompositionalLayout 和估计的高度创建单元格,基于单元格内的动态文本。每个单元格的底部后角都有一个补充项目(一个按钮)。创建布局的代码的一小段摘录:

然后我使用单独的方法来创建补充项:

问题:

因为单元格的高度是动态的,所以补充项目彼此不在同一y位置。但是,我确实希望它们是动态的,并且每个补充项目都相同y。见下图:

请求的结果

一个想法可能是能够将补充项目放在它们的包含组上(listItemGroup在我上面的摘录中),但是有没有办法把补充项目放在一个NSCollectionLayoutGroup

如果没有,实现这一结果的最佳方法是什么?

0 投票
0 回答
105 浏览

swift - UICollectionViewCompositionalLayout 瀑布

有人可以指导我如何创建“瀑布”布局。到目前为止,我创建的内容如下。但正如你所看到的,我希望删除间距。

在此处输入图像描述