2017-03-05 125 views
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() 
     } 
    } 

我基本上只是希望動畫只能換移動單元和目標單元格,而不是重新排序的「鄰居」之類的附加的圖像。

reorder default

我有它在「背後」的工作與此代碼:

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 
} 
+0

集合視圖真的是這裏最好的方式嗎?我問,因爲我有一個應用程序的行爲完全符合你的需要(拖動一個正方形並放在另一個正方形上交換它們),但我不使用集合視圖;這只是一個觀點的網格。我不需要集合視圖提供的任何東西。 – matt

+0

如果您對使用庫感興趣,請查看:https://github.com/ra1028/RAReorderableLayout –

回答

0

,當你在一個細胞識別長按你可以創建collectionViewCell的內容查看的副本。然後,您可以使所有單元格都處於靜止狀態時觸摸(touchesMoved)移動,當用戶放下它時(touchesEnded),您可以計算該位置的indexPath。當你擁有indexPath時,你可以像你已經做的那樣改變職位。

相關問題