使用UIView的关键帧动画时如何设置动画曲线:
animateKeyframesWithDuration:delay:options:animations:completion:
无论我在动画块中做什么似乎都是线性的(除非我使用UIViewKeyframeAnimationOptionCalculationModeCubic选项,但这不是我想要的).
在使用常规动画时,我希望在动画上有一个简单的曲线,如UIViewAnimationOptionCurveEaSEOut选项:
animateWithDuration:delay:options:animations:completion:
解决方法
如果您正在使用关键帧,则必须自行定义曲线.如果添加线性关键帧,则会有线性动画.如果添加非线性关键帧,您将具有非线性动画.
frameStartTime在这里是你的朋友…它将始终是关键帧之间的线性(或节奏/立方/立方体起搏,如在UIViewKeyframeAnimationOptionCalculationMode中定义)
UIViewKeyframeAnimationOptionCalculationModeLinear = 0 << 9,UIViewKeyframeAnimationOptionCalculationModeDiscrete = 1 << 9,UIViewKeyframeAnimationOptionCalculationModePaced = 2 << 9,UIViewKeyframeAnimationOptionCalculationModeCubic = 3 << 9,UIViewKeyframeAnimationOptionCalculationModeCubicPaced = 4 << 9
要计算正确的时间值,可以将其用作参考:
RBBEasingFunction
例如. EaseInOutQuad这样(其中t是动画内的相对时间):
if (t < 0.5) { return 2 * t * t; } else { return -1 + (4 - 2 * t) * t; }