gpt4 book ai didi

Swift 检测 UICollectionViewCell 是否被拖动到另一个 UICollectionViewCell 之上

转载 作者:行者123 更新时间:2023-11-30 12:15:21 26 4
gpt4 key购买 nike

我有一个 UICollectionView,只有 1 个部分,该部分中有许多单元格。我启用了拖放行为(使用长按手势识别器,因为 UICollectionView 位于通用 UIViewController 中)。

我希望拖放行为能够检测拖动的单元格何时位于另一个单元格的顶部。 Google 搜索没有提供任何有用的信息,但 Stackoverflow 有 this solution 。虽然我可以尝试通过在 UIViewController 类中编写类似的内容来检查拖动的单元格的矩形是否与每个其他单元格相交来实现这一点,但我想知道是否还有更多实现这一目标的有效方法是什么?

最佳答案

在我的脑海中,我认为您可以获取拖动 View 的最小和最大 X 或 Y 坐标(取决于 Collection View 是水平还是垂直),然后通过 View 进行二分搜索直到找到相交的集合。这样,您就不必测试所有 View 。

编辑:添加一个示例来阐明我的意思。假设我们有一组从左到右排列的 View :

0 1 2 3 4 5 6 7 8 9 10

我们首先获取拖动 View 的最小和最大 X 值。我们将其称为“minX”和“maxX”。我们首先查看列表中间的 View ,即 View 5。如果 maxX < View 5 的最小 X,那么我们要查找的 View 必须是 0...4 之一。如果 minX > 查看 5 的 min X,那么我们正在寻找 6...10 中的内容。否则, View 5 在水平维度上与拖动的 View 相交。

测试 View 5 后,我们测试 View 2 或 View 8,具体取决于拖动的 View 是在 View 5 的左侧还是右侧。我们继续使用此方法,直到遇到重叠 View ,并且每次我们测试一个 View ,我们排除了一半的 View ,因此它的性能比测试集合中的每个 View 要好。

一旦找到一个与拖动的 View 重叠的 View ,您将需要检查相邻的 View 以查看它们是否也重叠。如果拖动的 View 与其他几个 View 重叠,您必须选择重叠面积最大的 View 。

关于Swift 检测 UICollectionViewCell 是否被拖动到另一个 UICollectionViewCell 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com