如何使用CAMediaTimingFunction映射自定义值?

时间:2012-08-10 11:22:30

标签: objective-c ios animation timing

我想使用CAMediaTimingFunction(例如kCAMediaTimingFunctionEaseIn)将输入值(0-1)映射到输出值(0-1),就像这个类的the docs一样。但是,这种功能似乎根本没有暴露出来。

我是否可以通过某种方式为自己的自定义值访问此功能?这不是在UIView,CALayer等中 - 它只是在一些自定义代码中,我想使用iOS曲线。

2 个答案:

答案 0 :(得分:1)

实际上,功能是唯一暴露的功能。 CAMediaTimingFunction是一个类,它存储两个控制点的坐标,这两个控制点定义一个以(0.0,0.0)开始并以(1.0,1.0)结束的Bézier曲线。这样的曲线实际上是从区间[0,1]到区间[0,1]的映射。

如果您想了解如何设置特定曲线的控制点坐标,您可能想要谷歌bezier曲线。

附录:

当您澄清时,您希望使用现有的CAMediaTimingFunction实例来执行从值到其转换值的映射(也称为计算映射)。您可以使用getControlPointAtIndex:values:从实例检索控制点的坐标,并使用它们来计算映射。有关数学的信息,请参阅http://en.wikipedia.org/wiki/Bézier_curve

答案 1 :(得分:1)

这就是您所需要的:https://stackoverflow.com/a/19084008/251440

我自己需要它,所以构建了一个类,其界面和功能与CAMediaTimingFunction完全相同,但需要-valueForX:方法。