5

我想创建一个看起来像 Apple 的 CurveEaseInOut 一样的动画,以便我的应用程序看起来一致。问题是这个特定的动画不能使用 UIView animate 方法。我必须在每一帧手动操作位置。例如,我得到一个时间 T,我需要输出当时该点的中心 C。我不想使用线性关系(例如 C = T),而是希望它像 Apple 一样轻松进出。

Apple 将哪个曲线方程用于该动画选项?

我假设曲线看起来与此类似:(取自this question

在此处输入图像描述

如果是这样的话,看起来我应该能够用正确的常数调整三次 Hermite 样条方程并得到相同的结果。问题是 Apple 使用哪些常量?

4

2 回答 2

3

正如碳酸 (H2CO3) 指出的那样,问题是苹果使用了哪些控制点。

假设它与 Core Animation 中的默认计时功能相同,您可以从文档中获取控制点:

kCAMediaTimingFunctionDefault指定大多数动画默认使用的计时函数。它使用控制点 [(0.0,0.0), (0.25,0.1), (0.25,0.1), (1.0,1.0)] 逼近贝塞尔计时函数。通过使用此常量,您可以确保您的动画将使用当前的默认时间。


编辑

由于您提到了自定义动画,我非常建议您观看Rob Napier 的动画自定义层属性演示。您可以从 Core Animation 中受益,同时仍然可以进行自定义动画。(观看整个演示文稿。它有助于理解核心动画的大部分内容)

于 2013-05-03T19:25:20.737 回答
1

Simon Whitaker 有一个用于.CAMediaTimingFunction

他的代码转储了这些控制点:

linear        (0.00, 0.00), (0.00, 0.00), (1.00, 1.00), (1.00, 1.00)
easeIn        (0.00, 0.00), (0.42, 0.00), (1.00, 1.00), (1.00, 1.00)
easeOut       (0.00, 0.00), (0.00, 0.00), (0.58, 1.00), (1.00, 1.00)
easeInEaseOut (0.00, 0.00), (0.42, 0.00), (0.58, 1.00), (1.00, 1.00)
default       (0.00, 0.00), (0.25, 0.10), (0.25, 1.00), (1.00, 1.00)
于 2013-09-29T18:15:31.097 回答