3
2

More than 3 years have passed since last update.

[Xcode11]カスタムトランジションが遷移しなくなった時の対処法

Posted at

久々の投稿です。パッと見ではヒットしなかった話題なのですが、ハマる人もいる気がするので軽めに書きます。

何が起こったか

UIViewControllerTransitioningDelegateを利用してトランジションアニメーションを導入していたアプリをXcode11でビルドしたところアプリが落ちないのに遷移が正常に動作せず、アプリが操作不可になる現象が発生した

前提知識

iOS13からモーダルのデフォルトの挙動がハーフモーダルのような形に変化したのはよく知られていることだと思います。
これにあわせてsegueの遷移には
image.png
このように今までのTransitionの設定に加えPresentationという項目が増えているのがわかります。ここを設定することで今までのようなフルスクリーンのモーダルに変更したりすることができます。

解決法

この増えた設定項目が肝でした。カスタムトランジションの場合、このPresentationとともに増えたコンテキストの概念が迷子になるらしくそれが影響して遷移がうまく完了しないということのようでした。

ですのでシンプルにこのようなコードを入れてあげると解決します。

let viewController = NextViewController.instatiate()
viewController.modalPresentationStyle = .currentContext
present(viewController, animated: true, completion: nil)

このように明示的に modalPresentationStyle を設定すれば解決しました。
ちなみに僕の場合はcurrentContextもしくはfullScreenで動くようになりましたが、これはトランジションの種類にもよるかと思います。

ぜひ同じ症状にあった人は様々な項目を試してみてください。(本当は意味的にどれを選ぶべきとかありそうですが一旦...笑)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2