モーダルビュー表示時のアニメーションを変更する : Objective-C プログラミング

PROGRAM


モーダルビュー表示時のアニメーションを変更する

UIViewController を presentViewController:animated:completion: や presentModalViewController:animated: を使ってモーダルビューとして表示させたとき、既定では下から上へスライドして表示されるようになっています。

このアニメーションのスタイルは、UIViewController が持っている modalTransitionStyle プロパティ使って簡単に変更することができます。

 

なお、UINavigationController の画面移動のアニメーションを変更したい場合は UINavigationController のアニメーションを変更する に記した方法を使用します。

指定できるアニメーションのスタイル

UIViewController のモーダルビュー表示で指定できるアニメーションは、次の 4 つの中から選びます。

UIModalTransitionStyleCoverVertical

下から上に新しいビューがスライドしてくるように表示されるトランジションです。

UIModalTransitionStyleFlipHorizontal

横方向にくるっと回転して新しいビューに入れ替わるトランジションです。

UIModalTransitionStyleCrossDissolve

新しいビューが浮かび上がるように表示されるトランジションです。

UIModalTransitionStylePartialCurl

現在のビューをめくり上げると、その下に新しいビューが表示されているトランジションです。

 

トランジションを指定してモーダルビューを表示する

これらを新しい UIViewController の modalTransitionStyle プロパティに設定してから新しいビューを表示します。

viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;

 

[self presentViewController:viewController animated:YES completion:NULL];

これだけで、指定した通りのアニメーションを使って新しいビューを表示させることができます。

 

モーダルビューを非表示にする

このようにして表示した UIViewController を非表示にしたい場合は、表示中の UIViewController で普通に dismissViewControllerAnimated:completion: を呼び出します。

[self dismissViewControllerAnimated:YES completion:NULL];

トランジションを指定してモーダルビューを表示していると、それをこのように非表示にしたときにも、同じトランジションを逆に辿るようにして UIViewController が非表示にされます。

要は、表示のときに UIViewController に設定されたままの modalTransitionStyle を使って非表示処理を行っているので、dismissViewControllerAnimated:completion: を呼び出す前に self.modalTransitionStyle を変更してあげれば、非表示時のトランジションを変更することも可能です。

 

ただ、表示時か非表示時かのどちらかにだけ UIModalTransitionStylePartialCurl をしてした場合、期待した通りの動きをしてくれない様子でした。

もっとも、表示時と非表示時とで別々の動きをするのは操作の統一性にも欠けるので、避けておいた方がいいかもしれません。

[ もどる ]