iOS UICollectionView拖动排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS UICollectionView拖动排序相关的知识,希望对你有一定的参考价值。
参考技术A 效果图如下:2.1 通过长按操作找到需要被拖动的cell1
2.2 通过拖动cell1找到找到和它交换位置的cell2
2.3 交换cell1和cell2的位置
2.4 替换数据源,把起始位置的数据模型删除,然后将起始位置的数据模型插入到拖拽位置
如何在 Swift 4 中为 UICollectionView 的部分设置最大元素数?
【中文标题】如何在 Swift 4 中为 UICollectionView 的部分设置最大元素数?【英文标题】:How to set a max number of elements for sections of a UICollectionView in Swift 4? 【发布时间】:2018-06-08 23:10:13 【问题描述】:我正在创建一个具有重新排序功能的 UICollectionView。有点像this。
我想限制集合视图每个部分的元素数量并更改“排序动画”(当元素拖动时)。
例如: 您有一个包含 3 个部分(A、B 和 C)的集合视图。 这 3 个部分具有最大元素数。 您将一个元素从 B 部分移动到 A 部分。 A节的最后一个元素应该移动到B节,而不是增加A节的元素个数。
知道如何实现这个功能吗?
【问题讨论】:
让别人为你写代码并不是 *** 的真正目的。到目前为止,您尝试过什么?发布一些代码,以便我们查看您在哪里遇到问题... 【参考方案1】:如果是其他条件,则可以执行某些条件,并且一个部分中的当前项目数组,如果 items.count 高于允许的最大值,请检查下一部分的项目数量,如果低于则 max 将其放在那里。
您可能想尝试一些类似这样的扩展:
https://github.com/michel-moreau/DraggableCollectionView
https://github.com/lognllc/DraggableCollectionView
https://github.com/liangdahong/BMDragCellCollectionView
https://github.com/Instagram/IGListKit
请务必下载并演示他们的代码,这可能是您正在寻找的。p>
【讨论】:
所以没有办法通过重写方法或者在 CollectionView 中设置参数来实现这种行为吧? 没有以编程方式检查您是否没有超过 maxcount 集编号。虽然您可能能够以 3rd 方库的形式找到扩展【参考方案2】:您为什么不尝试使用一个功能来查看所有三个部分,查看哪些部分有太多项目,然后移动它们。然后...当返回每个集合视图中的项目数时,当它超过每个部分的最大元素数时调用该函数。如果您需要澄清,请告诉我。
func collectionView(.....numberOfItemsOrRows?...)
if (newArrayCountForList1 > maxElements)
redistributeArrayValues()
// copy the above if statement with function inside for the next 2 arrays
(Assuming each section has an array representing elements in that section)
【讨论】:
以上是关于iOS UICollectionView拖动排序的主要内容,如果未能解决你的问题,请参考以下文章
iOS 利用UICollectionView拖拽排序 实现的仿照腾讯新闻频道管理功能 XLChannelControl
如何在 Swift 4 中为 UICollectionView 的部分设置最大元素数?
如何禁用 UICollectionView 部分之间的单元格拖动?