gpt4 book ai didi

iphone - 如何计算具有已知起始速度和距离的 UIViewAnimationCurveEaseOut 动画的持续时间?

转载 作者:行者123 更新时间:2023-12-03 19:23:26 24 4
gpt4 key购买 nike

我正在使用 UIViewAnimationCurveLinear 对两点之间的 View 进行动画处理,因此我知道该动画的速度。在某些情况下,我想附加 UIViewAnimationCurveEaseOut 以使 View 缓慢停止。为了使这种效果无缝,缓出动画必须以与其之前的线性动画相同的速度开始。给定一个固定距离,我希望这种缓动发生,我如何计算达到这个已知起始速度所需的持续时间?

例如,假设我在 10 秒内将 View 从 x = 0 动画到 x = 100。因此速度为 10 像素/秒。我现在希望使用 UIViewAnimationCurveEaseOut 动画将 View 从 x = 100 减速到 x = 120。该动画应该持续多长时间才能确保以 10 像素/秒开始?

据我了解,Core Animation 的 CAMediaTimingFunction 使用三次贝塞尔曲线控制动画节奏,其中第二个和第三个控制点决定曲线的形状。我认为 UIViewAnimationCurve 缓动函数也是三次贝塞尔曲线。如果我知道这些函数使用的默认控制点,我应该能够计算出计算给定速度和距离的持续时间的公式,但我还没有找到任何地方记录的这些默认控制点。

最佳答案

我可能无法给您完整的答案,但我可以向您指出 CAMediaTimingFunction 的 -getControlPointAtIndex:values: 方法。这应该让您创建一个 EaseOut 计时函数,然后检查它的控制点。

我还会向您指出 article by Matt Gallagher关于使用 CAKeyframeAnimation 完成的自定义加速曲线,这可能对您也有用。

关于iphone - 如何计算具有已知起始速度和距离的 UIViewAnimationCurveEaseOut 动画的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1957342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com