3

我想使用 CAMediaTimingFunction(例如 kCAMediaTimingFunctionEaseIn)将输入值(0-1)映射到输出值(0-1),就像文档说这个类一样。但是,此功能似乎根本没有公开。

有什么方法可以让我为自己的自定义值访问此功能?这不在 UIView、CALayer 等中——它只是在一些我想使用 iOS 曲线的自定义代码中。

4

2 回答 2

1

实际上,该功能是唯一公开的功能。CAMediaTimingFunction 是一个存储两个控制点坐标的类,这些控制点定义了一条从 (0.0,0.0) 开始到 (1.0,1.0) 结束的贝塞尔曲线。这样的曲线实际上是从区间 [0,1] 到区间 [0,1] 的映射。

如果您想了解如何为特定曲线设置控制点的坐标,您可能想用谷歌搜索什么是贝塞尔曲线。

附录:

正如您所澄清的,您希望使用现有的 CAMediaTimingFunction 实例来执行从一个值到它的转换值的映射(也就是计算映射)。您可以使用 getControlPointAtIndex:values: 从实例中检索控制点的坐标,并使用它们来计算映射。有关数学,请参见http://en.wikipedia.org/wiki/Bézier_curve

于 2012-08-10T11:34:35.087 回答
1

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

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

于 2013-09-29T22:27:16.303 回答