何かの処理中でモーダル表示中のビューコントローラー全体をマスクしたいことがたまにあり、その度にサイズを忘れて調べるのでメモしておく。
iPadでのモーダルビューは3種類+1種類指定可能。
+1種類は(UIModalPresentationCurrentContext:親ビューコントローラーと同じものという指定)
詳細は「iPadヒューマンインターフェースガイドライン」の項「モーダルビュー」を参照。
モーダルビューの種類
モーダルビューの種類はビューコントローラのmodalPresentationStyleプロパティにそれぞれ下記のように指定する事が可能。
・フルスクリーン(UIModalPresentationFullScreenを指定する)
文字通り、フルスクリーンサイズ。
・Page Sheet(UIModalPresentationPageSheetを指定する)
幅が768ポイント、高さは「現在の高さ」
・Form Sheet(UIModalPresentationFormSheet)
540×620ポイント。
【注意】
モーダルビューの種類の指定はモーダルビューとして表示されるビューコントローラにに指定する。
presentModalViewControllerのパラメータで指定するビューコンとローラーにpresentModalViewControllerを呼び出す前に指定しておく。
※これをいつも忘れて混乱してしまう。
例① 普通にモーダルビュー表示(Form Sheet指定)
UIViewController *vcModal = [[UIViewController alloc] init];
[vcModal setModalPresentationStyle:UIModalPresentationPageSheet];
[self presentModalViewController:vcModal animated:YES];
[vcModal release];
例② ナビゲーションバー付きのモーダルビュー表示
UIViewController *vcModal = [[UIViewController alloc] init];
UINavigationController *ncModalNavigation = [[UINavigationController alloc] initWithRootViewController:vcModal];
[ncModalNavigation setModalPresentationStyle:UIModalPresentationPageSheet];
[self presentModalViewController:ncModalNavigation animated:YES];
[ncModalNavigation release];
[vcModal release];