いい感じのアニメーションを実装したくてライブラリを探していたところ、良いのを見つけました。
andreamazz/BubbleTransition
が、とりあえずREADMEどおりにやっても画面遷移のアニメーションが変わりません。
中身を見てみるとStoryboardを使用する前提で作られてるみたいでした。
問題点
Storyboardなしでアプリを作る練習をしている自分としては、なんとかして使いたい。
prepareメソッド
コードを見た感じAnimationの動き自体は問題ないが、反応していない。
「何をトリガーにアニメーションを動かしてるだろ」という視点で調べていくうちに
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
}
この**「segueが動作することをViewControllerに通知する」**メソッドがトリガーになってるのに気づきました。
UIViewControllerのprepareメソッドについて - emahiro/b.log
【推測】
Storyboardなしで画面遷移を実装した場合、segueが動作しないのではないか
解決策
このメソッドの中身をUIButtonのactionに入れてしまう
@objc func tappedActionButton(_ sender: UIButton) {
let modalViewController = ModalViewController()
modalViewController.transitioningDelegate = self
modalViewController.modalPresentationStyle = .custom
modalViewController.modalPresentationCapturesStatusBarAppearance = true
modalViewController.interactiveTransition = interactiveTransition
present(modalViewController, animated: true, completion: nil)
}
もっといい方法があるかと思いますが、とりあえず希望のAnimationは実装できました。