Q:

UIView animate with out time duration

When swipe , i want navigate between pages with smoothly ( change according to finger moves ) not to navigate with a given time
class FirstCustomSegue: UIStoryboardSegue {
   override func perform() {
    // Assign the source and destination views to local variables. 
    var firstVCView = self.sourceViewController.view as UIView! 
    var secondVCView = self.destinationViewController.view as UIView! 

    // Get the screen width and height. 
    let screenWidth = UIScreen.mainScreen().bounds.size.width
    let screenHeight = UIScreen.mainScreen().bounds.size.height

    // Specify the initial position of the destination view. 
    secondVCView.frame = CGRectMake(screenWidth, 0.0, screenWidth, screenHeight)

    // Access the app's key window and insert the destination view above the current (source) one. 
    let window = UIApplication.sharedApplication().keyWindow
    window?.insertSubview(secondVCView, aboveSubview: firstVCView)

    // Animate the transition. 
    UIView.animateWithDuration(0.4, animations: { () -> Void in
        firstVCView.frame = CGRectOffset(firstVCView.frame, -screenWidth, 0.0)
        secondVCView.frame = CGRectOffset(secondVCView.frame, -screenWidth, 0.0)

        }) { (Finished) -> Void in
            self.sourceViewController.presentViewController(self.destinationViewController as!  UIViewController,
                animated: false,
                completion: nil)
    }
} }

A:

I had to deal with it recently.  look at my github project, maybe it will hepl you. 
If a nutshell.  You should create class adopts 

UIViewControllerAnimatedTransitioning

and implement 2 methods.  One for animation's duration, another for your custom animation (moving, fade, and so on). 
For example:
class ModalPresentAnimationController: NSObject, UIViewControllerAnimatedTransitioning {

func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) - > NSTimeInterval {
    return 0.5
}

func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
    let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)! 
    // ...
    let duration = transitionDuration(transitionContext)
    UIView.animateWithDuration(duration, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.2, options: UIViewAnimationOptions. CurveLinear, animations: {
        toVC.view.frame = // new postion
        }) { finished in

           transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
    }
}

Then in your ViewController to specify a new ViewControllerTransitioning
extension ViewController: UIViewControllerTransitioningDelegate {

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? { 
    swipeInteractionController.wireToViewController(presented)
    return modalPresentAnimationController
}

But, if you want to add "change according to finger moves" you should create class adopts 

UIPercentDrivenInteractiveTransition

And in it to use gestureRecognizer.