问题标签 [uicollectionviewdelegate]

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 回答
283 浏览

swift - UICollectionView 项、部分和单元格之间有什么区别?

我正在实现一个 UICollectionView,其中包含动态数量的按钮/单元格。我试图了解每个(项目、部分和单元格)之间的区别,因此我可以了解 Apple 提供的 collectionView 方法。

0 投票
1 回答
1382 浏览

ios - UICollectionView 布局在滚动时表现异常

我正在设置一个集合视图,以便在 Instagram 上显示内容。Instagram 的网格

为了设置布局,我使用了UIcollectionviewDelegateFlowLayout的一些委托方法:

当我打开项目时,collectionView 运行良好。当您快速向下滚动 collectionView 以使所有单元格瞬间消失时,就会出现问题。在那一刻,我之前设置的单元格布局不成立,图像变得超级缩放并且彼此重叠,如下所示:混乱的 collectionView 我不知道如何解决这个问题。同样在编译器中我得到这个错误:

0 投票
3 回答
473 浏览

ios - Swift 中具有不同单元类型的可重用数据源

根据这篇文章,我创建了一个可重用的数据源,UICollectionView如下所示:-

然后我扩展了这个类,所以我可以根据模型类型提供“特定于单元格”的设置

这是完美的,但是,这些单元格中的每一个都有不同的设计,但实际上接受非常相似的属性(与其他单元格一样) - 因此,我正在考虑创建一个简单的FeedItemModel并在渲染我的提要之前映射这些属性. 这将确保在我渲染提要项目的任何地方,我总是在处理相同的属性。

考虑到这一点,我尝试创建类似的东西:-

然而,这会下降,因为如果is ,该reuseIdentifier字段不再正确。item.type.alert

如何重构此模式以允许我使用具有相同模型的不同单元格类型?或者我应该放弃这种方法并为每种细胞类型坚持不同的模型,而不管输入属性是否相同?

0 投票
0 回答
77 浏览

ios - 在将 isSelected 设置为 true 之前,等待 UICollectionViewCell 上的点击结束

目前,我有一个collectionView,它唯一的功能是让用户选择一种颜色。当用户选择一种颜色(单击一个单元格)时,一个选定的指示符 ( UIView) 在 内部进行动画处理cell,让用户知道该特定颜色已被选中。核心功能在那里,但我的问题更多地基于 UI。当我滚动时,单元格认为我正在单击它,它会设置isSelected为真一秒钟,直到我将手指从单元格中移开。这会导致动画在不需要的时间发生。所以,我认为问题出shouldSelectItemAtCollectionViewDelegate方法上。用UIGestureRecognizer我可以衡量是否sender state.began.ended。我的问题会要求这个或类似的东西吗?

以下是选择collectionView委托方法。

TrayColorPreviewCell(custom UICollectionViewCell) 类中,我使用isSelected来运行动画。此动画是滚动时重复发生的动画。

0 投票
1 回答
117 浏览

ios - 保留对 UICollectionView 标头的引用

我需要存储一个视图以用作 UICollectionView 标头。我不希望它循环出内存,因为它需要保留其状态/数据等。

使用表格视图,您可以做到tableView.tableHeaderView = view

这是我正在尝试的:

我不想每次用户滚动它然后返回时都重新创建它,所以我试图存储对它的引用。这虽然行不​​通。很难解释,但它显示的视图被切断并且开关没有响应。如果我注释掉“if”部分并每次只创建一个新部分,它看起来正确但状态丢失(即开关关闭) 最好的方法是什么?

0 投票
1 回答
712 浏览

uicollectionview - iOS14 中 UICollectionview 的潜在错误

我在 iOS14 处理 CollectionView 的方式中遇到了一个奇怪的行为。我注意到(从 iOS13.5 更改为 iOS14) UICollectionViewCells 的显示顺序是错误的。下面的图片是完全相同的代码(在 xCode12 中)的屏幕截图,唯一的区别是正确的是 iOS13.5 的构建和 iOS13.5 的 iPhone 11 模拟器,而错误的是 iOS13.5 iOS14 的构建和 iOS14 上带有 iPhone 11 的模拟器。其他一切(代码、设置等)都完全相同:

图 1,集合应该如何显示(在 iOS13.5 中正确):

在此处输入图像描述

如果用iOS14构建相同的代码,并在与iOS14相同的iPhone模拟器上运行,结果如下(不是顺序不对:是反了):

在数据源(这是一个带有标签的数组)中,一切都是正确的,并且 cellForItemAt 委托工作正常。

在 iOS14 中肯定有一些不同的处理方式。最后一个示例是另一个屏幕截图,其中框的大小不同(取决于标签的长度):

正确(为 iOS13.5 构建)是:

在此处输入图像描述

在为 iOS14 构建时会产生以下结果:

在此处输入图像描述

同样,代码完全相同,我只是为不同的 iOS 版本构建项目。在我看来,为 iOS14 修改集合的方式可能存在错误。欢迎任何帮助或想法。

0 投票
1 回答
48 浏览

swift - SWIFT:如何在返回行之前使 UICollectionView 项目填充行

这是我已经实现的: 在此处输入图像描述

看右边的黑色空间,它仍然可以容纳两个额外的物品。但是由于某种原因,从第 7 项开始,渲染从下一行开始。
我的布局配置只更改了两个参数:

任何想法,我应该配置哪些参数以强制 collectionView 在返回下一行之前填充每个“行”?

0 投票
1 回答
47 浏览

ios - 应用单元格缩放转换后如何保持水平 UICollectionviewCell 的行距相同

我有一个水平 UICollectionview,我需要在其中转换或减小未选中单元格的大小。我在 sizeForItem 委托函数中为所有单元格提供了一个通用大小。我已经给出了在单元格之间保持的最小行间距。但是当重新缩放单元格时的问题可以说(0.8 缩放)单元格之间的空间越来越宽并且不能保持共同的大小。

这是collectionView的一些代码片段,

///这个函数在Cell类 SomeCellClass: UICollectionviewCell

下面是我用这段代码得到的输出,

在此处输入图像描述

从随附的屏幕截图中,您可以看到单元格之间的空间是如何变化的。

0 投票
0 回答
64 浏览

swift - 从底部开始显示 collectionView 单元格 - 以编程方式快速

我试图在一个集合视图中显示一个在另一个之上的单元格。我想要实现的布局在这个委托布局函数中得到了正确的描述:

所以让我们举一个例子,我们有 20 个单元格要显示。我希望显示的第一个单元格是最后一个单元格。

现在我开始显示第一个单元格,然后以这种方式滚动到最后一个单元格:

如何在不必先显示第一个元素的情况下从结束元素开始显示集合视图?

0 投票
0 回答
21 浏览

swift - 如何从头开始填充集合视图 - 快速 - 以编程方式

我正在开发一个聊天视图控制器,这样做时我需要在加载控制器时显示最新消息:我正在使用一个collectionView在另一个之上的单元格布局。

这是我实现的方法并且它有效,但不如我想要的那么好:

  1. 加载少量数据(20 条消息)

  2. 然后使用此功能滚动到底部:

除了每当加载视图时我都需要看到令人讨厌的滚动动画之外,我也不想加载不必要的消息。

有没有办法从底部开始填充集合视图?并“从头开始”填充 :)

我也在网上做了很多研究,但没有发现任何有用和实用的东西。

例如,这个问题建议将集合视图旋转 180°,我试过了,但每当我以动态方式关闭键盘时,它会给我的单元格带来一些错误。滚动指示器位于左侧而不是右侧的事实也令人讨厌。

我很想听听你的观点。