该库是在使用关键帧动画且关键值不易通过动画进度进行插值时创建的,适用于常规使用。
以下是可用的缓动函数列表
进入 | 离开 | 进入和离开 | 离开和进入 | |
---|---|---|---|---|
线性 | ![]() |
![]() |
![]() |
![]() |
正弦 | ![]() |
![]() |
![]() |
![]() |
二次方 | ![]() |
![]() |
![]() |
![]() |
三次方 | ![]() |
![]() |
![]() |
![]() |
四次方 | ![]() |
![]() |
![]() |
![]() |
五次方 | ![]() |
![]() |
![]() |
![]() |
指数 | ![]() |
![]() |
![]() |
![]() |
圆形 | ![]() |
![]() |
![]() |
![]() |
回弹 | ![]() |
![]() |
![]() |
![]() |
弹跳 | ![]() |
![]() |
![]() |
![]() |
弹性 | ![]() |
![]() |
![]() |
![]() |
此库可以通过面向对象和函数式两种方式使用。
在第一种情况下,缓动函数代表以下对象实例之一(它们都是 ESQEasingFunction
的子类)
ESQLinearEasingFunction
ESQSinusoidalEasingFunction
ESQQuadraticEasingFunction
ESQCubicEasingFunction
ESQQuarticEasingFunction
ESQQuinticEasingFunction
ESQExponentialEasingFunction
ESQCircularEasingFunction
ESQBackEasingFunction
ESQBounceEasingFunction
ESQElasticEasingFunction
这些对象可以通过以下几种方式实例化:
ESQEasingFunctionTypeOut
)和参数CGFloat progress = ...
ESQEasingFunction *easingFunction = [[ESQElasticEasingFunction alloc] init];
CGFloat easedProgress = [easingFunction easedProgress:progress];
CGFloat progress = ...
ESQEasingFunction *easingFunction = [ESQElasticEasingFunction easingFunctionWithType:ESQEasingFunctionTypeInOut];
CGFloat easedProgress = [easingFunction easedProgress:progress];
CGFloat customAmplitude = ...
CGFloat progress = ...
ESQEasingFunction *easingFunction = [ESQElasticEasingFunction easingFunctionWithType:ESQEasingFunctionTypeInOut amplitude:customAmplitude period:ESQDefaultElasticPeriod];
CGFloat easedProgress = [easingFunction easedProgress:progress];
此外,如果您更喜欢函数或需要更好的性能,您可以使用与使用对象具有相同结果的缓动函数。以下是所有可用缓动函数的列表:
进入 | 离开 | 进入和离开 | 离开和进入 | |
---|---|---|---|---|
线性 | linearIn(p) |
linearOut(p) |
linearInOut(p) |
linearOutIn(p) |
正弦 | sinusoidalIn(p) |
sinusoidalOut(p) |
sinusoidalInOut(p) |
sinusoidalOutIn(p) |
二次方 | quadraticIn(p) |
quadraticOut(p) |
quadraticInOut(p) |
quadraticOutIn(p) |
三次方 | cubicIn(p) |
cubicOut(p) |
cubicInOut(p) |
cubicOutIn(p) |
四次方 | quarticIn(p) |
quarticOut(p) |
quarticInOut(p) |
quarticOutIn(p) |
五次方 | quinticIn(p) |
quinticOut(p) |
quinticInOut(p) |
quinticOutIn(p) |
指数 | exponentialIn(p) |
exponentialOut(p) |
exponentialInOut(p) |
exponentialOutIn(p) |
圆形 | circularIn(p) |
circularOut(p) |
circularInOut(p) |
circularOutIn(p) |
回弹 | backIn(p, o) |
backOut(p, o) |
backInOut(p, o) |
backOutIn(p, o) |
弹跳 | bounceIn(p, o) |
bounceOut(p, o) |
bounceInOut(p, o) |
bounceOutIn(p, o) |
弹性 | elasticIn(p, a, q) |
elasticOut(p, a, q) |
elasticInOut(p, a, q) |
elasticOutIn(p, a, q) |
每个函数都应该接收进度作为输入,并获取一些参数(如果需要)。
CGFloat customAmplitude = ...
CGFloat progress = ...
CGFloat easedProgress = elasticInOut(progress, customAmplitude, ESQDefaultElasticPeriod);
请注意,提供的函数默认值在每个头文件中均有说明,其中说明了此函数。
easeqs-objc 通过 CocoaPods 可用,或可以轻松地从源代码构建。
如果您正在使用 Swift,您可能希望安装动态框架,这可以通过以下 Podfile 完成:
platform :ios, '9.0'
use_frameworks!
pod 'easeqs-objc'