0
我得到了一個帶有XX圖像/單元格的UICollectionview
,我希望在拖放時讓它們交換位置。我正在使用內置重新排序功能,但沒有滿足我的需求。下面是代碼:UICollectionview重新排列圖像單元格
longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongGesture))
longPressGesture.minimumPressDuration = 0.2
longPressGesture.delaysTouchesBegan = true
cameraRollCollectionView.addGestureRecognizer(longPressGesture)
func handleLongGesture(gesture: UILongPressGestureRecognizer) {
switch(gesture.state) {
case UIGestureRecognizerState.began:
guard let selectedIndexPath = cameraRollCollectionView.indexPathForItem(at: gesture.location(in: cameraRollCollectionView)) else {
break
}
cameraRollCollectionView.beginInteractiveMovementForItem(at: selectedIndexPath)
case UIGestureRecognizerState.changed:
cameraRollCollectionView.updateInteractiveMovementTargetPosition(gesture.location(in: gesture.view!))
case UIGestureRecognizerState.ended:
cameraRollCollectionView.endInteractiveMovement()
default:
cameraRollCollectionView.cancelInteractiveMovement()
}
}
我基本上只是希望動畫只能換移動單元和目標單元格,而不是重新排序的「鄰居」之類的附加的圖像。
我有它在「背後」的工作與此代碼:
func collectionView(_ collectionView: UICollectionView,
moveItemAt sourceIndexPath: IndexPath,
to destinationIndexPath: IndexPath) {
let temp = selectedUIImages[sourceIndexPath.row]
selectedUIImages[sourceIndexPath.row] = selectedUIImages[destinationIndexPath.row]
selectedUIImages[destinationIndexPath.row] = temp
}
集合視圖真的是這裏最好的方式嗎?我問,因爲我有一個應用程序的行爲完全符合你的需要(拖動一個正方形並放在另一個正方形上交換它們),但我不使用集合視圖;這只是一個觀點的網格。我不需要集合視圖提供的任何東西。 – matt
如果您對使用庫感興趣,請查看:https://github.com/ra1028/RAReorderableLayout –