已编辑:为 iOS 5 及更高版本添加了另一个包含控制器的选项。
另一种解决方案是设置图层的时间空间。
这是通过 CALayer 的 speed 属性完成的。要减慢动画速度,可以使用:
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 时,其动画的运行速度将是该图层父级动画的两倍。
另一种选择是使用视图控制器包含。(仅限 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: 完全控制动画。