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