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

swift - 使用 UICollectionViewCompositionalLayout 复制 iMessage 贴纸应用

我正在尝试使用新的 UICollectionViewCompositionalLayout 在 iMessage 中复制 Stickers 应用程序。

但是,我似乎无法重现水平“分页”行为。

应该有n + 1部分,其中n我的页数,水平对齐。

期望的行为:

在此处输入图像描述

我想出了什么:

在此处输入图像描述

我的代码:

0 投票
1 回答
1432 浏览

ios - UICollectionViewCompositionalLayout 以编程方式设置 section.orthogonalScrollingBehavior 页面?

我正在实施UICollectionViewCompositionalLayout和使用

水平滚动一个部分。

这允许用户在一个部分中从一个页面水平滚动到另一个页面。

我用

获取用户滚动到的页面。

如何以编程方式滚动到本节中的页面?

0 投票
1 回答
1729 浏览

ios - UICollectionView 单元格展开动画问题

我遇到了一个问题,我的 UICollectionView 使用 UICollectionViewCompositionalLayout + Diffable 数据源不允许我平滑地为垂直单元格展开动画。我有一列类似于 UITableView 的全角单元格,我正在尝试扩展单元格以在单元格选择时显示截断的文本。

这在没有动画的情况下可以正常工作,但是当我尝试对其进行动画处理时,如果扩展单元格下方的单元格将具有超出屏幕边界的最终位置,我无法让它看起来流畅,因为单元格将立即消失而不是被动画“推”下。这个问题可以在链接的 gif https://imgur.com/a/ulj0p6n中看到

如果扩展单元格下方的单元格的最终位置在屏幕边界内,则不会出现此问题,如下所示:https ://imgur.com/a/uJ2RRRn 。

我发现了一个似乎有类似问题的旧问题:UICollectionView animating cell size change cause undesired behavior

那里的答案很老,对我没有帮助,因为我没有使用 Flow Layout,也没有使用 Obj-C。

我看到许多应用程序(例如 Instagram,当图像标题具有“查看更多”时)使用 UICollectionView 实现了预期的结果而没有任何动画问题,所以我认为这一定是可能的。

0 投票
1 回答
2707 浏览

ios - 是否可以使用组合布局创建具有动态宽度但固定高度的单元格

TLDR;根据部分,我需要调整单元格的大小:

  1. 固定宽度但动态高度(例如,全屏宽度和自动高度取决于内容)
  2. 动态宽度但固定高度(第一个单元格可以是 120pt 宽,第二个单元格可以是 155pt 宽,等等。)

这是我们需要清除可能存在的任何歧义的象形图。 在此处输入图像描述

我只是在寻找:“是的,你可以通过组合布局来实现这一点,这就是如何......”。或者“不,你不能用组合来实现这个,你必须使用流布局或其他一些自定义布局。”

几个额外的要求:

  1. 建议的解决方案不建议将collectionView(_:layout:sizeForItemAt:)与流布局一起使用,因为这是我们试图避免的事情。如果这是答案,那么您可能会简单地说 - “不,这无法通过组合布局实现”。
  2. 建议的解决方案应该让集合视图根据它们的内在内容大小来确定如何适当地放置单元格。这类似于使用 tableview 的动态自调整大小功能UITableViewAutomaticDimension

背景资料:

  • 很清楚如何使用组合布局来实现全宽但动态高度的单元格。看到这个交流
  • 此处此处记录了具有自动内容大小的流布局的已知限制。那是写了一本O'Reilly 书籍的人。基本上他说没有真正的自动调整流布局,尽管苹果声称有。因此,我们试图通过组合布局来解决这个问题。
0 投票
1 回答
1276 浏览

ios - 组合布局IOS 13组背景颜色

我试图找出是否有一种方法可以在使用组合布局时为组提供背景颜色。我试图找到一个我可以使用的直接 API,但没有找到任何东西。

0 投票
0 回答
225 浏览

ios - UICollectionViewCompositionalLayout 正交部分 willDisplayCell 分析

我正在使用集合视图组合布局,并且需要对正交滚动部分的“userViewedCell”事件进行准确分析。我一直在使用 collectionView(willDisplay:forItemAt) 来检测何时将显示单元格,但这似乎非常有问题。

为了演示这个问题,这里是集合视图组合布局的 Apple 示例项目:https ://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources

组合布局.gif

我对 Apple 代码所做的唯一更改是添加此功能:

当我滚动一个正交部分时,将调用 willDisplayCell 以获取其他正交部分中的单元格。例如,我将第 0 节滚动到第 10 单元格,并且 willDisplayCell 被调用以用于 [0, 10]、[1, 10] 和 [2, 10],即使第 1 节和第 2 节仅显示前几个单元格。

一个相关的问题是,当我将第 0 部分一直滚动到开头时,将永远不会为 [0, 0]、[0, 1] 或 [0, 2] 调用 willDisplayCell。

如何解决此问题以获得准确的分析?还是我应该使用其他方法?

0 投票
2 回答
554 浏览

swift - 如何使用组合布局在 UICollectionView 内等分固定大小的单元格?

我有一个使用组合布局创建的集合视图。每个项目都有固定的宽度和高度,部分占据表格的整个宽度(它本身占据了屏幕的整个宽度)。我正在尝试创建一种算法来计算内容和部分插图,以使每个项目之间具有相等的间距,并且屏幕边框之间的间距也相等。换句话说,一切之间的空间应该是相同的。

以下是计算内容和部分插图的方法:

使用这些方法,我能够在项目之间拥有相等的空间。但是它们与屏幕边框有不同的空间,如下图所示:

content 和 section insets 的结果,它使项目在屏幕中间居中,但在边框中增加了更大的空间

那么,如何更改这些算法以实现项目之间以及屏幕边框之间的相等间距(所有内容都应具有相同的间距)。

0 投票
0 回答
159 浏览

swift - NSCollectionViewCompositionalLayout 的自动布局问题

我正在构建集合视图,其中部分具有垂直滚动内容(具有无限滚动视图),并且所有部分彼此相邻放置(这里也使用无限滚动视图,但水平)。它看起来像在这张图片上。

我面临几个问题:

  1. 标题视图位于视图层次结构中的集合视图下方(它不是hiddennor enabled,它只是被集合视图的其余部分覆盖),偏移部分没有帮助,因为它隐藏在整个集合视图下方,而不仅仅是部分. 这是屏幕截图,最右侧是视图层次结构中的第一个子视图,左侧是最后一个子视图(后面有切割的不相关视图)。
  2. 我的项目具有动态生成的大小(通过.xib文件中的自动布局实现),但组合布局的.estimated()值不会根据单元格内容的给定高度而改变(所有单元格的宽度保持不变)。

这是我的代码:

0 投票
0 回答
233 浏览

ios - 在 UICollectionViewCompositionalLayout 子类中覆盖 layoutAttributesForElements(in:)

我正在寻找 UICollectionViewCompositionalLayout 的子类,其目标是覆盖layoutAttributesForElement(in:)以使用初始布局属性super.layoutAttributesForElement(in: rect)并在其中一些重叠时修改属性(我的一些项目将渗入其他部分,并且如果一个项目与我的另一个项目重叠希望它向下移动其中一个,直到它们不再重叠)。

这有什么可能的问题吗?我怀疑的一个是如果 layoutAttributesForItem(at:) 被调用,那么我可能会遇到一些问题,因为我无法通过覆盖这个函数来做我想做的事情。

0 投票
1 回答
200 浏览

ios - 可以使用 UICollectionViewCompositionalLayout 制作此布局

我正在尝试使用UICollectionViewCompositionalLayout

我想要一个全宽的项目部分,然后是一个以这种方式包装的部分

例子

基本人力资源财务福利员工敬业度都将是一个部分中的一个单元格。请忽略其他 UI 元素。

此部分还需要支持多行,因为可能有 1 到 15 个标签。

我已经尝试过了,但无法使用每个项目的 来创建包装效果,没有每个项目的宽度intrinsicContentSize

在此处输入图像描述

到目前为止,我目前的尝试是

我真的很感激任何帮助,我可以理解如何实现这个布局。