我可以提高presentModalViewController的动画速度吗?
-
20-08-2019 - |
题
我正在编写一个绘图应用程序,当用户单击工具栏中的项目时,该应用程序会显示工具视图控制器。然而,我的几位 Beta 测试人员报告说,工具面板打开速度太慢。我正在使用标准的 presentModalViewController:animated:调用来显示工具,我尝试将其包装在如下代码块中以加快速度:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 0.1];
[self presentModalViewController:settings animated:YES];
[UIView commitAnimations];
不幸的是,这不起作用。如果您说“animated:NO”,效果会更好,但底层绘图画布视图会立即被删除(因为控制器认为它不再可见),因此动画会在白色背景上发生。
之前有人做过这件事愿意提供一些建议吗?我将不胜感激!
解决方案
一个类似的问题被提出此处一>。
您还可以更改使用这种技术的速度,但在我的实验,它这样做在一个空白的背景,你建议。
其他提示
编辑:为 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 时,其动画的运行速度将是该图层父级动画的两倍。
另一种选择是使用视图控制器包含。(仅限 iOS 5 及更高版本)
您可以使用UIViewController的transitionFromViewController:toViewController:duration:options:animations:completion:完全控制动画。