     override func prepareLayout() {
         super.prepareLayout()
         
+        if let insets = self.datasource?.collectionView?(scrollTrigerEdgeInsetsInCollectionView: self.collectionView!) {
+            self.trigerInsets = insets
+        }
     }
     
     override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]? {

import UIKit

@objc protocol RAReorderableLayoutDelegate: UICollectionViewDelegateFlowLayout {
    
}

@objc protocol RAReorderableLayoutDataSource: UICollectionViewDataSource {
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
}

class RAReorderableLayout: UICollectionViewFlowLayout, UIGestureRecognizerDelegate {

    
    private var fakeCellCenter: CGPoint?
    
    private var trigerInsets: UIEdgeInsets = UIEdgeInsetsMake(150.0, 150.0, 150.0, 150.0)
    
    private var insetTop: CGFloat {
        let contentInset = self.collectionView!.contentInset
