扩展了 UICollectionView 和 UICollectionViewLayout,允许用户通过拖拽移动项。
draggable
设置为 true。collectionViewLayout
设置为一个实现了 UICollectionViewLayout_Warpable
协议的布局(如果没有布局则回退)。对于默认的 Flow 布局(网格),使用 DraggableCollectionViewFlowLayout
- 您可以在 Interface Builder 中设置此布局。UICollectionViewDataSource_Draggable
扩展协议。它的工作方式与 UITableView
类似。扩展协议包含与 UITableViewDataSource
协议中找到的拖拽相关的方法。当用户抬起手指时,只调用一次 moveItemAtIndexPath:toIndexPath
方法。这是通过修改 layoutAttributesForElementsInRect
方法的输出来实现“扭曲”单元格的。这允许您在不触摸数据源的情况下物理移动单元格。
此扩展可以与大多数自定义布局一起工作,只需实现 UICollectionViewLayout_Warpable
协议。实现这种协议的一个简单方法是创建您的布局子类,并将 layoutAttributesForElementsInRect
的输出通过 LSCollectionViewLayoutHelper
传递。有关如何做到这一点的示例,请参阅 DraggableCollectionViewFlowLayout
- 您可以从那里复制粘贴。 DraggableCollectionViewFlowLayout
包含在为 Apple 的默认 UICollectionViewFlowLayout
。还有 CircleLayoutDemo,用于 2012 年 WWDC 的 Apple CircleLayout 示例。
DraggableCollectionView 可在 MIT 许可证 下使用。