现在我在我的节目一个瓶颈,我试着写。我试图使用缩放手势来控制一个UIImage的规模。导致该计划放慢脚步,成为波涛汹涌的规模及其计算。下面是方程。

currentScale = (currentDistance / initialDistance) * scaleMod;

scaleMod是什么都目前的规模是用户把他们的手指在屏幕上。因此,下一次用户执行捏旧尺度本质上是新的缩放动作的开始点。

有帮助吗?

解决方案

1)你不能计算scaleMod / initialDistance一次,而currentDistance正在改变。这样,你只有做到这一点值倍currentDistance,从而消除一个鸿沟。

2)确保,这实际上是瓶颈。这最有可能是没有的,除非你做的事情真的错了。

其他提示

有关的任何类型的三个VARS的,这种计算可以容易地进行每秒百万次性能影响很小。你的问题是在其他地方。

如果您修复scaleMod和initialDistance到2的幂可以使用更快的乘法和除法的变化。

请参阅这里供参考

您可以存储scaleMod / initialDistance。当缩放是活动的(用户的手指仍然在屏幕上),乘,作为需要通过currentDistance值。

一旦用户已完成夹持,存储新scaleMod / initialDistance值下一次夹持发生。

如果你正在做一个int(或其他整数)计算,看他是否能使用float精度做到这一点。浮点除法比整数更快(较少的位来划分,假设你的CPU)具有浮点单元)。

另外,尽量因子出分割为由倒数相乘。

检查InitialDistance!= 0第一! :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top