如何在Swift 4中为UICollectionView的各个部分设置最大元素数?

时间:2018-06-08 23:10:13

标签: ios swift uicollectionview

我正在创建具有重新排序功能的UICollectionView。有点像this

我想限制集合视图的每个部分中的元素数量,并更改"订购动画" (当一个元素在拖动时)。

例如:
您有一个包含3个部分(A,B和C)的集合视图 这三个部分具有最大数量的元素 您将一个元素从B部分移动到A部分 A部分的最后一个元素应该移到B部分,而不是增加A部分中的元素数量。

知道如何实现此功能吗?

2 个答案:

答案 0 :(得分:0)

一些if else条件会和一个部分中的当前项目数组以及如果items.count高于允许的最大值,请检查下一部分的项目数量,如果低于那么最大值将其丢弃。

你可能想尝试像这样的扩展:

https://github.com/michel-moreau/DraggableCollectionView

https://github.com/lognllc/DraggableCollectionView

https://github.com/liangdahong/BMDragCellCollectionView

https://github.com/Instagram/IGListKit

请务必下载并演示他们可能正在寻找的代码。

答案 1 :(得分:0)

为什么不尝试使用查看所有三个部分的函数,查看哪些部分包含太多项目然后移动它们。然后...当返回每个集合视图中的项目数时,如果该函数超过每个部分的最大元素数,则调用该函数。如果您需要澄清,请告诉我。

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)
}