QMUIAnimationHelper

@interface QMUIAnimationHelper : NSObject

typedef NS_ENUM(NSInteger, QMUIAnimationEasings) {
    QMUIAnimationEasingsLinear,
    QMUIAnimationEasingsEaseInSine,
    QMUIAnimationEasingsEaseOutSine,
    QMUIAnimationEasingsEaseInOutSine,
    QMUIAnimationEasingsEaseInQuad,
    QMUIAnimationEasingsEaseOutQuad,
    QMUIAnimationEasingsEaseInOutQuad,
    QMUIAnimationEasingsEaseInCubic,
    QMUIAnimationEasingsEaseOutCubic,
    QMUIAnimationEasingsEaseInOutCubic,
    QMUIAnimationEasingsEaseInQuart,
    QMUIAnimationEasingsEaseOutQuart,
    QMUIAnimationEasingsEaseInOutQuart,
    QMUIAnimationEasingsEaseInQuint,
    QMUIAnimationEasingsEaseOutQuint,
    QMUIAnimationEasingsEaseInOutQuint,
    QMUIAnimationEasingsEaseInExpo,
    QMUIAnimationEasingsEaseOutExpo,
    QMUIAnimationEasingsEaseInOutExpo,
    QMUIAnimationEasingsEaseInCirc,
    QMUIAnimationEasingsEaseOutCirc,
    QMUIAnimationEasingsEaseInOutCirc,
    QMUIAnimationEasingsEaseInBack,
    QMUIAnimationEasingsEaseOutBack,
    QMUIAnimationEasingsEaseInOutBack,
    QMUIAnimationEasingsEaseInElastic,
    QMUIAnimationEasingsEaseOutElastic,
    QMUIAnimationEasingsEaseInOutElastic,
    QMUIAnimationEasingsEaseInBounce,
    QMUIAnimationEasingsEaseOutBounce,
    QMUIAnimationEasingsEaseInOutBounce,
    QMUIAnimationEasingsSpring, // 自定义任意弹簧曲线
    QMUIAnimationEasingsSpringKeyboard // 系统键盘动画曲线
};

/**
 * 动画插值器
 * 根据给定的 easing 曲线,计算出初始值和结束值在当前的时间 time 对应的值。value 目前现在支持 NSNumber、UIColor 以及 NSValue 类型的 CGPoint、CGSize、CGRect、CGAffineTransform、UIEdgeInsets
 * @param fromValue 初始值
 * @param toValue 结束值
 * @param time 当前帧时间
 * @param easing 曲线,见`QMUIAnimationEasings`
 */
+ (id)interpolateFromValue:(id)fromValue
                   toValue:(id)toValue
                      time:(CGFloat)time
                    easing:(QMUIAnimationEasings)easing;
/**
 * 动画插值器,支持弹簧参数
 * mass|damping|stiffness|initialVelocity 仅在 QMUIAnimationEasingsSpring 的时候才生效
 */
+ (id)interpolateSpringFromValue:(id)fromValue
                         toValue:(id)toValue
                            time:(CGFloat)time
                            mass:(CGFloat)mass
                         damping:(CGFloat)damping
                       stiffness:(CGFloat)stiffness
                 initialVelocity:(CGFloat)initialVelocity
                          easing:(QMUIAnimationEasings)easing;

@end

Undocumented

  • 动画插值器 根据给定的 easing 曲线,计算出初始值和结束值在当前的时间 time 对应的值。value 目前现在支持 NSNumber、UIColor 以及 NSValue 类型的 CGPoint、CGSize、CGRect、CGAffineTransform、UIEdgeInsets

    Declaration

    Objective-C

    + (id)interpolateFromValue:(id)fromValue
                       toValue:(id)toValue
                          time:(CGFloat)time
                        easing:(QMUIAnimationEasings)easing;

    Swift

    class func interpolate(fromValue: Any!, toValue: Any!, time: CGFloat, easing: QMUIAnimationEasings) -> Any!

    Parameters

    fromValue

    初始值

    toValue

    结束值

    time

    当前帧时间

    easing

    曲线,见QMUIAnimationEasings

  • 动画插值器,支持弹簧参数 mass|damping|stiffness|initialVelocity 仅在 QMUIAnimationEasingsSpring 的时候才生效

    Declaration

    Objective-C

    + (id)interpolateSpringFromValue:(id)fromValue
                             toValue:(id)toValue
                                time:(CGFloat)time
                                mass:(CGFloat)mass
                             damping:(CGFloat)damping
                           stiffness:(CGFloat)stiffness
                     initialVelocity:(CGFloat)initialVelocity
                              easing:(QMUIAnimationEasings)easing;

    Swift

    class func interpolateSpring(fromValue: Any!, toValue: Any!, time: CGFloat, mass: CGFloat, damping: CGFloat, stiffness: CGFloat, initialVelocity: CGFloat, easing: QMUIAnimationEasings) -> Any!