編集: iOS 5 以降のコントローラーを含む別のオプションを追加しました。
別の解決策は、レイヤーの時間空間を設定することです。
これは、CALayer の速度プロパティを通じて行われます。アニメーションを遅くするには、次を使用できます。
MytransparentVCViewController *vc = [[MytransparentVCViewController alloc] initWithNibName:@"MytransparentVCViewController" bundle:nil];
// Makes all animations 10 times slower
// To speed it up, set it to multiples of 1: 2 is 2 times faster, 3 is 3 times faster etc
vc.view.layer.speed = 0.1;
[self presentModalViewController:vc animated:YES];
リンクされた投稿で提案されているソリューションは、提示しようとしているモーダル ビュー コントローラーのアニメーション速度を変更することが目的の場合 (たとえば、UIModalTransitionStyleCoverVertical を使用する場合) は機能しないことに注意してください。
レイヤーの速度は絶対値ではなく、そのレイヤーの親時間空間の関数です (レイヤーがレイヤー階層のルートにある場合を除きます)。たとえば、レイヤーの速度を 2 に設定すると、そのアニメーションはそのレイヤーの親のアニメーションと比較して 2 倍の速さで実行されます。
さらに別のオプションは、View Controller コンテインメントを使用することです。(iOS 5 以降のみ)
http://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW81 .
UIViewController の transitionFromViewController:toViewController:duration:options:animations:completion: を使用して、アニメーションを完全に制御できます。