UI 進階之拖拽排序的實現

發表於2016-11-21

導讀

拖拽排序是新聞類的App可以說是必有的互動設計,如今日頭條,網易新聞等。拖拽排序是一個互動體驗非常好的設計,簡單,方便。

今日頭條的拖拽排序介面
111338042-7d5fa67d9b03b5a9
今日頭條的拖拽排序介面.png
我實現的長按拖拽排序效果
121338042-fb80d87f5c5fa090
長按拖拽排序.gif
實現方案

1.給CollectionViewCell新增一個長按手勢,通過協議把手勢傳遞到collectionView所在的控制器中。

2.開始長按時對cell進行截圖,並隱藏cell。

3、在手勢移動的時候,移動截圖檢視,用遍歷的方法求出截圖移動到哪個cell的位置,再呼叫系統的api交換這個cell和隱藏cell的位置,並且資料來源中的資料也需要調整順序

4.手勢停止時,移除截圖的view,顯示隱藏cell

其他

程式碼還可以進一步封裝,寫一個資料管理類dataTool,dataTool作為collectionView的資料來源,所有的資料來源方法都寫到dataTool類中。手勢的代理方法也在裡面實現,這樣控制器會簡潔很多,控制器就不需要關注拖拽排序的具體邏輯了。大家有空可以自己寫寫看,也許你們有更好的處理方案,可以評論交流一下。
github地址:https://github.com/HelloYeah/DraggingSort

相關文章