Nav apraksta

PresentDisappearAnimatedTransitioning.swift 1.6KB

    // // PresentDisappearAnimatedTransitioning.swift // PaiAi // // Created by ffib on 2018/12/17. // Copyright © 2018 yb. All rights reserved. // import UIKit final class PresentDisappearAnimatedTransitioning: NSObject, UIViewControllerAnimatedTransitioning { weak var delegate: PresentAnimatorDelegate? fileprivate var animator: PresentAnimatable init(animator: PresentAnimatable) { self.animator = animator super.init() } func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { return 0.3 } func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { guard let fromVC = transitionContext.viewController(forKey: .from), let fromView = fromVC.view, let toVC = transitionContext.viewController(forKey: .to), let toView = toVC.view, let animationView = delegate?.animationView else { return } let duration = transitionDuration(using: transitionContext) animator.fromViewPresentingAnimation(duration: duration, in: fromView) animator.contentViewDisappearAnimation(duration: duration, in: animationView) DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + duration) { let isCancelled = transitionContext.transitionWasCancelled transitionContext.completeTransition(!isCancelled) transitionContext.containerView.addSubview(toView) fromView.removeFromSuperview() } } }