     
     override public func layoutSubviews() {
         super.layoutSubviews()
-        
         containerView.frame = bounds
     }
     
     // MARK: Animator
     private var animator: UIDynamicAnimator!
-    // anchorView
     static private let anchorViewWidth = CGFloat(1000)
     private var anchorView = UIView(frame: CGRect(x: 0, y: 0, width: anchorViewWidth, height: anchorViewWidth))
     private var anchorContainerView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))

            return .None
        }
    }
}

public class ZLSwipeableView: UIView {
    // MARK: - Public
    // Data Source
    public var numPrefetchedViews = 3
    public var nextView: (() -> UIView)? {
        didSet {
            loadViews()
        }
    }
    // Animation
    public var animateView: (view: UIView, index: Int, views: [UIView], swipeableView: ZLSwipeableView) -> () = {
        func toRadian(degree: CGFloat) -> CGFloat {
            return degree * CGFloat(M_PI/100)

    static func fromPoint(point: CGPoint) -> ZLSwipeableViewDirection {
        switch (point.x, point.y) {
        case let (x, y) where abs(x)>=abs(y) && x>=0:
            return .Right
        case let (x, y) where abs(x)>=abs(y) && x<0:
            return .Left
        case let (x, y) where abs(x)<abs(y) && y<=0:
            return .Up
        case let (x, y) where abs(x)<abs(y) && y>0:
