Ios CABASICIATION速度--跟上用户输入

Ios CABASICIATION速度--跟上用户输入,ios,core-graphics,calayer,cabasicanimation,Ios,Core Graphics,Calayer,Cabasicanimation,更新:这真的很简单,因为在使用触摸时不设置UI元素的动画。它现在完全跟随触摸,没有延迟 我目前正试图通过在UIView子类中实现CALayer子类来实现UI功能。我在自定义UIVIew的相应视图控制器中接收触摸事件,通知UIVIew有关触摸的信息,然后通知CALayer,以便为层中绘制的UI元素设置动画 这一切都是可行的,但我注意到,当运动中有一个大的三角形时(比如快速滚动手指),卡巴斯卡化会滞后。理想情况下,我希望动画与用户的手指保持完美对齐 我想出了一个简单的方法,把动画的速度设置得任意高,

更新:这真的很简单,因为在使用触摸时不设置UI元素的动画。它现在完全跟随触摸,没有延迟

我目前正试图通过在UIView子类中实现CALayer子类来实现UI功能。我在自定义UIVIew的相应视图控制器中接收触摸事件,通知UIVIew有关触摸的信息,然后通知CALayer,以便为层中绘制的UI元素设置动画

这一切都是可行的,但我注意到,当运动中有一个大的三角形时(比如快速滚动手指),卡巴斯卡化会滞后。理想情况下,我希望动画与用户的手指保持完美对齐

我想出了一个简单的方法,把动画的速度设置得任意高,就像

anim.speed = 10.0f;
这基本上与用户的手指保持一致,但我觉得这是一个完全的黑客行为,而不是一个可交付的解决方案。为了解决这个问题,我是否应该人为地限制处理的触摸事件的数量?我是否应该对动画的速度/持续时间进行某种我不知道的计算


谢谢你的帮助

在连续手势过程中,不应设置动作动画,而应直接移动到手势的位置。当手势完成时,如果您希望它固定在其他位置,则为最后的后手势目标设置动画。但不要在手势本身中设置动画



在极少数情况下,如果单个帧的渲染速度非常慢,仍然可以感觉到延迟。显然,应该优化
绘制(:)
过程,使其不会变慢(或者拍摄快照并设置快照视图的动画,而不是复杂视图的动画)。但是在手势过程中,你也可以使用“预测性触摸”,操作系统可以估计用户的手势在未来的位置。例如,您可以实现
touchsmoved(:with:)
,然后调用。通过将视图移动到预测的触摸位置,可以减少感觉到的滞后。

在我发布这篇文章之后,我实际上有同样的想法关闭动画,除了在您提到的捕捉动画期间。这听起来很有希望;在我实现它之后,我会在这里发帖,告诉您它是否解决了滞后问题。谢谢你的回复!