问题标签 [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 投票
1 回答
79 浏览

swift - 如何使用 UICollectionViewCompositionalLayout 创建像图像一样的集合视图

几天来,我无法弄清楚如何使用 UICollectionViewCompositionalLayout 制作像截图中那样的集合视图。任何人都可以帮忙吗? 图片!!!!

0 投票
0 回答
383 浏览

ios - 具有组合布局的 CollectionView 中的动态大小的标题

我有一个由组合布局 + diffable 数据源驱动的集合视图。它使用三个补充边界项:页眉、页脚和“前导页眉”。

应用布局示例

问题是:前导标题的分数大小基于整个容器,而不是部分。所以我不能简单地设置标题的'分数高度 = 1'。相反,我需要计算部分大小,并使用“绝对值”将前导标题的高度设置为它。但是我怎样才能得到部分的大小呢?

部分中的组高度固定为 .absolute(39)。因此,如果我知道一个部分中的组数,我应该能够计算高度。

奖励积分!这些部分是可展开可折叠的。这意味着前导标题的高度需要在其部分的展开折叠时改变。

0 投票
1 回答
1000 浏览

uicollectionview - diffable 数据源节标题在更新期间闪烁

我目前面临的问题是,在将新快照应用到当前数据源时,页眉、页脚和装饰视图不属于集合视图的子视图,这可能会被视为奇怪的闪烁。以前有人遇到过这个问题吗?

我通过以下方式更新数据源:

编辑:它似乎只发生在 iOS 14 设备上。

EDIT2:这是示例项目中同一问题的屏幕录像: https ://imgur.com/a/0rS9aZU

在它的代码下面:

感谢@JWK

0 投票
2 回答
338 浏览

uicollectionview - UICollectionViewCompositionalLayout 组宽度小于部分宽度和分页

我在每个尝试重新创建 AppStore 布局的教程中都看到了这种代码:

重要的部分是组分数宽度 < 1.0。所以对于这个例子,假设我们在那个水平组中有 3 个项目 + 一些其他部分,就像 AppStore 一样。现在,如果我水平滚动到该水平组中的第三个项目,然后我垂直向下滚动,然后向上滚动,结果总是相同的:现在第二个项目在该组中居中,而不是第三个居中当我开始向下滚动时。

我还注意到水平滚动该组时存在一些奇怪的滚动伪影:有时当我将第一个项目向左拖动并释放时,它只是跳回中心而没有动画。或者当我滚动到最后一项然后尝试向右滚动更多时,它只会弹回第一项。

这真的很奇怪,看起来像 UICollectionViewCompositionalLayout 实现中的一个错误或这个 + iOS 版本的组合。有没有人遇到过类似的问题,也许知道解决方法?我看到每种类型的寻呼都会发生这种情况。

编辑:我刚刚了解到这个问题是 iOS 14 特有的,我在 iOS 13.7 模拟器上测试了我的应用程序,它在那里正常工作。

0 投票
1 回答
251 浏览

ios - UICollectionVIew Compositional Layout & DiffableDataSource,如何开启数据预取?

使用新的 Compositional Layout & DiffableDataSource 时如何启用数据预取?

之前,我们可以通过符合自定义数据源对象来实现这一点,例如,

class CustomDataSource: NSObject, UICollectionViewDataSource, UICollectionViewDataSourcePrefetching

现在,数据源是UICollectionViewDiffableDataSource,它只符合UICollectionViewDataSource.

一种方法是扩展它以符合预取协议。但是,由于它将 DataSource 的协议实现封装到其更高级别的方法中,例如snapshotsapply。我不知道如何扩展它以符合预取协议。

0 投票
1 回答
441 浏览

ios - UICollectionViewCompositionalLayout - 部分或组中的中心项目

我用新的合成材料设置了一个集合视图及其布局,它非常酷,它似乎非常可扩展,但我找不到让项目在集合中居中的方法,这是 IMO 的一个基本功能可以想象得到支持..

我所拥有的是:

在此处输入图像描述

使用此代码完成:

但我需要的是这个:

在此处输入图像描述

有没有人有这方面的运气?谢谢

0 投票
2 回答
325 浏览

swift - 如何为 UICollectionViewCompositionalLayout 中的不同部分设置多个背景视图

我试图为我的部分提供不同的背景颜色/图像,但发现很难在 createCompositionalLayout() 中设置两个不同的背景视图。

下面是两个背景视图组件和部分。在布局创建方法中有各种注册类/笔尖的示例,但这只是为所有部分创建一个背景视图。

在 createCompositionalLayout() 中有一个用于返回 NSCollectionLayoutSection (部分)的开关,但要为每个部分返回已注册的背景视图布局是我的障碍。

0 投票
0 回答
410 浏览

ios - 覆盖 UICollectionViewCompositionalLayout 中的 LayoutAttributesForElements 以创建弹性标题?

尝试在组合布局中创建一个有弹性的标题,但到目前为止没有结果,我怎样才能在组合布局中实现这一点?谢谢!

检查了我能找到的所有示例,并且未谈论与组合布局相关的 UICollectionViewLayoutAttributes。

0 投票
0 回答
42 浏览

uicollectionviewcompositionallayout - UICollectionViewCompositionalLayout 和自定义 UICollectionViewCells

我想用 UICollectionViewCompositionalLayout 替换 UICollectionViewLayout 的自定义实现,但似乎无法获得相同的布局。我尝试了多种组合来生成布局。这是最新的。

}

这是使用上面的代码生成的布局: 在此处输入图像描述

所有单元格必须具有相同的大小,当然,所有视图都应底部对齐。问题似乎是高度。是的,我可以使用 UICollectionViewLayout 中的一些代码来计算正确的高度,但这有点违背了目的。如果我必须这样做,我不妨保留我的自定义 UICollectionViewLayout。

它应该是这样的: 在此处输入图像描述

是否可以使用 UICollectionViewCompositionalLayout 实现我想要的布局?如果是这样,怎么做?

0 投票
1 回答
87 浏览

uicollectionview - 将 CollectionView 嵌入到具有动态高度的 CollectionViewCell 中

两个集合视图都使用组合布局和可区分的数据源。每个外部集合视图单元都嵌入一个集合视图。

外部集合视图具有估计的组高度,即

每个单元格的集合视图都受单元格内容视图的前导、尾随、顶部、底部锚点的约束。IE

每个单元格的集合视图可以具有大约 50 到 800 的高度范围。

问题是如何将每个单元格调整为单元格集合视图的实际内容大小。由于部分布局不允许单独提供单元格的尺寸。

如果我们给单元格高度估计值太低,比如 50。那么单元格的集合视图只是大小为 50 并且可以垂直滚动(这是不希望的)。

如果我们给单元格高度估计过高,比如 800。那么当单元格的集合视图很小时,单元格中就会留下很大的空白。

我可以在运行时使用单元模型估计高度。但是,我很难找到使当前布局无效的位置,然后使用新的单元格高度触发重新布局。