在ios中使用关键帧动画时如何设置动画曲线?

使用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;
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...