GitHub - DeveloperLx/LxGridView-swift: Imitation iOS system desktop icon arrangement and interaction by UICollectionView!

Imitate Apple iOS system Desktop icons arrangement and interaction by inheriting UICollectionView!

You only need drag directory LxGridView to your project.
Minimum support iOS version: iOS 6.0

You can use LxGridView as convenient as UICollectionView.

let _gridViewFlowLayout = LxGridViewFlowLayout()
//	... config _gridViewFlowLayout

_gridView = LxGridView(frame: GRIDVIEW_FRAME, collectionViewLayout: _gridViewFlowLayout)
//	...	congif _gridView

_gridView.registerClass(LxGridViewCell.classForCoder(), forCellWithReuseIdentifier: GRIDVIEW_CELL_REUSE_IDENTIFIER)

//	implement delegate method
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return dataArray.count
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(LxGridViewCellReuseIdentifier, forIndexPath: indexPath) as! LxGridViewCell
    
    cell.delegate = self
    cell.editing = _gridView.editing
    
    //	...	config cell
    
    return cell
}

func collectionView(collectionView: LxGridView, itemAtIndexPath sourceIndexPath: NSIndexPath, willMoveToIndexPath destinationIndexPath: NSIndexPath) {
    
    let dataDict = dataArray[sourceIndexPath.item]
    dataArray.removeAtIndex(sourceIndexPath.item)
    dataArray.insert(dataDict, atIndex: destinationIndexPath.item)
}

func deleteButtonClickedInGridViewCell(gridViewCell: LxGridViewCell) {

    if let gridViewCellIndexPath = _gridView!.indexPathForCell(gridViewCell) {
    
        dataArray.removeAtIndex(gridViewCellIndexPath.item)
        _gridView.performBatchUpdates({ [unowned self] () -> Void in
            self._gridView.deleteItemsAtIndexPaths([gridViewCellIndexPath])
        }, completion: nil)
    }
}

LxGridView is available under the Apache License 2.0. See the LICENSE file for more info.