GBA001/Delta/Pause Menu/Segues/PauseTransitionCoordinator.swift

54 lines
2.1 KiB
Swift

//
// PauseTransitionCoordinator.swift
// Delta
//
// Created by Riley Testut on 1/30/16.
// Copyright © 2016 Riley Testut. All rights reserved.
//
import UIKit
import Roxas
class PauseTransitionCoordinator: NSObject, UIViewControllerAnimatedTransitioning
{
let presentationController: UIPresentationController
var presenting = false
init(presentationController: UIPresentationController)
{
self.presentationController = presentationController
super.init()
}
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
{
return 0.4
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning)
{
let destinationViewController = transitionContext.viewController(forKey: UITransitionContextToViewControllerKey)!
let sourceViewController = transitionContext.viewController(forKey: UITransitionContextFromViewControllerKey)!
destinationViewController.view.frame = transitionContext.finalFrame(for: destinationViewController)
destinationViewController.view.frame.origin.y = self.presenting ? transitionContext.containerView().bounds.height : -destinationViewController.view.bounds.height
transitionContext.containerView().addSubview(destinationViewController.view)
destinationViewController.view.layoutIfNeeded()
UIView.animate(withDuration: self.transitionDuration(using: transitionContext), delay:0, options:RSTSystemTransitionAnimationCurve, animations: {
sourceViewController.view.frame.origin.y = self.presenting ? -sourceViewController.view.bounds.height : transitionContext.containerView().bounds.height
destinationViewController.view.frame.origin.y = 0
self.presentationController.containerView?.setNeedsLayout()
self.presentationController.containerView?.layoutIfNeeded()
}) { finished in
transitionContext.completeTransition(finished)
}
}
}