我正在使用 UIViewAnimationCurveLinear 为两点之间的视图设置动画,所以我知道这个动画的速度。在某些情况下,我想附加一个 UIViewAnimationCurveEaseOut 以使视图缓慢停止。为了使这种效果无缝,缓出动画必须以与其之前的线性动画相同的速度开始。给定一个我希望这种缓动发生的固定距离,我如何计算达到这个已知起始速度所需的持续时间?
例如,假设我在 10 秒内将我的视图从 x = 0 设置为 x = 100。因此速度为 10 像素/秒。我现在希望使用 UIViewAnimationCurveEaseOut 动画将视图从 x = 100 减速到 x = 120。这个动画应该持续多长时间才能确保它以 10 像素/秒开始?
据我了解,Core Animation 的 CAMediaTimingFunction 使用三次贝塞尔曲线控制动画节奏,其中第二个和第三个控制点决定了曲线的形状。我假设 UIViewAnimationCurve 缓动函数也是三次贝塞尔曲线。如果我知道这些函数使用的默认控制点,我应该能够制定公式来计算给定速度和距离的持续时间,但是我还没有设法在任何地方找到这些默认控制点。