tomoyaonishiのブログスマートフォン用の表示で見るtomoyaonishiのブログiOSのことを中心に・・・その他もあるよ!この広告は、90日以上更新していないブログに表示しています。1UIViewControllerのカスタムトランジションUIViewControllerのカスタムトランジションってめっちゃ複雑じゃないないですか?実際にやってみるとわりと簡単なんですが、クラスがいろいろあったり、デリゲートメソッドも似たようなものが多くて、UIViewControllerAnimatedTransitioningとかUIViewControllerTransitioningDelegateとか、「すみません、もう一度お願いします」みたいなのが多すぎてさらに混乱するんでしょね。あとはAppleのサンプルコードもネット上のサンプルコードも超絶どシンプルなものがないのも要因かと。OSSもオーバーキルなものが多いし、ごちゃごちゃやってて結局わかりづらい。高く設計されていて「めっちゃええやん..」ってなります。いうわけで、カスタムトランジションのシンプルなサンプルを書いたので自由にコピペして使ってくださいUIViewでも簡単にできますが、UIViewControllerベースのほうがライフサイクルもしっかりしていて、最近のAppleの主流?(UIAlertControllerとか)にも合っていていいかなと思います。大きく3つくらいの利用目的があるかなと思います。dismissさせたい注意ですが、アニメーションとプレゼンテーションを明確に意識してください。アニメーションは遷移時に下から出てくるのか、右から出てくるのか、フェードインなのかということです。プレゼンテーションはどこにどの大きさで表示されるか、背景はどうするかなど、遷移アニメーション後の状態のことを指します。present時の遷移アニメーションだけを変更したいmodalPresentationStyleを自作するイメージです。1.UIVC.transitioningDelegateをどこかにセットする。dismiss()の直後に呼ばれる。}これだけでpresent時のアニメーションを書き換えることができました。クラスが別れているので別のVCでも使いたいときは簡単に使えますね。present時のpresentされるVCの表示位置、大きさ、また背景にブラーをつけるなどをしたい次はカスタムプレゼンテーションです。アニメーションは変更せず、表示位置を変えたり、大きさを変えたりできます。アニメーションとは無関係です。アラート、アクションシート、サイドバーなどを自作したいときに使えます。1.UIVC.transitioningDelegateをどこかにセットする。解説済みなので省略2.デリゲートメソッドを実装し、UIPresentationControllerオブジェクトを返すpresent時の状態を変更するものなので、アニメーションの変更のようにdismiss時のメソッドはありません。}これで全画面のpresentではなくて一部に表示するようなことができます。カスタムトランジションのうち、カスタムアニメーションとカスタムプレゼンテーションを解説しました。紹介したクラスはほかにも様々なプロパティやメソッドをもっているので調べてみてください。アニメーションやプレゼンテーションの仕方によってはViewControllerの参照を持っておいたりする必要が出てくると思います。カスタムアニメーションとカスタムプレゼンテーションの合わせ技で好きなアニメーションで好きなpresent状態にできます。インタラクティブトランジションでドラッグして閉じるとかもできますが、これら2つはまたの機会にまとめます。ソースコード(著作権ありません、自由にコピペしてください。1月別アーカイブ参加グループプログラミングはてなブログをはじめよう!tomoyaonishiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。