iOS中的默认动画缓动功能是什么?

Gug*_*lie 3 animation ios

在iOS中,动画是默认的缓动函数(UIViewAnimationOptionCurveEaseInOut)是二次还是立方?还有什么?

omz*_*omz 9

这是一个立方贝塞尔曲线.没有记录精确的控制点,因此它们可以在不同版本之间进行更改,但您可以通过CAMediaTimingFunction以下方式获取它们:

CAMediaTimingFunction *func = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
for (int i = 0; i < 4; i++) {
    float *values = malloc(sizeof(float) * 2);
    [func getControlPointAtIndex:i values:values];
    NSLog(@"Control point %i: (%f, %f)", i+1, values[0], values[1]);
    free(values);
}
Run Code Online (Sandbox Code Playgroud)

我不用它的值是(0.0, 0.0),(0.42, 0.0),(0.58, 1.0),(1.0, 1.0),大致相当于这条曲线:

曲线

  • 这非常类似于`3t ^ 2 - 2t ^ 3`,这是基本的[Hermite混合函数]之一(https://en.wikipedia.org/wiki/Cubic_Hermite_spline),您经常会发现它在硬件中实现(例如` GLSL中的smoothstep()`.如果你想快速近似,你可以使用它. (3认同)