有没有办法禁用ios上的所有动画?

Tah*_*bek 4 ios kif

仍应调用回调.我想用它进行KIF测试.目的是减少测试时间.

Leo*_*ica 8

最简单的方法是speed将窗口图层的属性设置为较大的数字.这样做是为了控制动画的速度; 值> 1会提高速度.设置一个足够高的值,动画将比帧长度(1/60秒)短.

这是最佳选择,因为它会同时影响UIKit和Core Animation动画.从iOS7开始,很多系统动画实际上是直接使用Core Animation执行的.


pll*_*uke 8

装饰@Leo的答案:

如果您不需要细粒度控制,在大多数情况下,设置应用程序的keyWindow的speed属性将加速所有动画.所以你只需要:

[UIApplication sharedApplication].keyWindow.layer.speed = 5.0;
Run Code Online (Sandbox Code Playgroud)

这可以在任何你想要的地方调用.我们在所有测试中都设置了它,因此动画总是很快.(通过子类化或使用beforeAll实现,如果你的BDD或你想要的任何结构.)

另外,如果您感兴趣的话,我们已经看到,当从速度= 1.0到速度= 5.0时,平均速度增加大约10%,其中5.0实际上足够快,几乎是瞬时的.这显然取决于您的应用程序通过多少动画,但考虑到启用它是多么容易,对于大多数测试来说,它是没有脑子的.