Skip to content

takehilo/TransitionAnimation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

遷移アニメーションの超基本

参考資料

View Controller Programming Guide for iOS 「トランジションアニメーションをカスタマイズする」

遷移アニメーションの概要説明

画面遷移アニメーションを実装するにはまず、UIViewControllerTransitioningDelegateプロトコルに準拠した遷移デリゲートを実装する。

遷移デリゲートは、画面遷移が発生するときに、UIKitに対して以下のオブジェクトを提供する。

  • アニメーターオブジェクト
  • インタラクティブアニメーターオブジェクト
  • Presentation Controller

遷移先のビューコントローラのtransitioningDelegateプロパティに遷移デリゲートインスタンスを渡すと、画面遷移時に遷移デリゲートによるアニメーションが実行される。

アニメーションのロジック

遷移元ビューコントローラのpresent(_:animated:completion:)を呼び出すと、遷移デリゲートのanimationController(forPresented:presenting:source:)が呼ばれ、アニメーターオブジェクトが取得される。
アニメーターオブジェクトがnilでなければ、以下のステップを実行する。

  • 遷移デリゲートのinteractionControllerForPresentation(using:)を呼び出し、インタラクティブアニメーターオブジェクトが利用可能かどうか確認する
    • インタラクティブアニメーターオブジェクトがnilであれば、ユーザ操作なしでアニメーションを開始する
  • アニメーターオブジェクトのtransitionDuration(using:)を呼び出し、アニメーションの持続時間を取得する
  • インタラクティブアニメーターオブジェクトがnilかどうかで分岐
    • nilであれば、アニメーターオブジェクトのanimateTransition(using:)を呼び出す
    • nilでなければ、インタラクティブアニメーターのstartInteractiveTransition(_:)を呼び出す
  • UIKitはアニメーターオブジェクトがコンテキスト遷移オブジェクトのcompleteTransition(_:)を呼び出すのを待ってから、遷移元ビューコントローラのpresent(_:animated:completion:)の完了ハンドラを呼び出す
  • 最後に、アニメーターオブジェクトのanimationEnded(_:)が呼ばれる

simple-animation.gif

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages