悪魔は優しい

なんでもやるし、なんにもできないIT屋メモ。

swiftで画面遷移時にアニメーションさせる

calendar

画面遷移時のメニューアニメーションをかっこよくしたいので、有名なライブラリを読んだ。
まず全体構造。

UIViewControllerAnimatedTransitioningプロトコルを適応したクラスを作り、

extension MenuTransitionAnimator: UIViewControllerAnimatedTransitioning {
 public func animateTransition(using context: UIViewControllerContextTransitioning)
 public func transitionDuration(using context: UIViewControllerContextTransitioning?) -> TimeInterval
}

を実装します。animateTransitionでは、アニメーションの内容を。transitionDurationでは遷移時間を記述します。
アニメーションは、animationTransitoinの引数cntextが保持する、transitionContext.containerViewを操作することで実装します。

ViewControllerでは、UINavigationControllerDelegateを適応する。
UINavigationControllerDelegateの

    func navigationController(_: UINavigationController, animationControllerFor _: UINavigationControllerOperation,
        from _: UIViewController, to _: UIViewController) -> UIViewControllerAnimatedTransitioning?

がtransitionクラスを返すように実装します。