QMUIDisplayLinkAnimation

@interface QMUIDisplayLinkAnimation : NSObject

@property(nonatomic, strong, readonly) CADisplayLink *displayLink;

@property(nonatomic, strong) id fromValue;
@property(nonatomic, strong) id toValue;

/// 动画时间
@property(nonatomic, assign) NSTimeInterval duration;

/// 动画曲线
@property(nonatomic, assign) QMUIAnimationEasings easing;

/// 是否需要重复,如果设置为YES,那么会无限重复动画,默认NO
/// TODO: 目前功能上不支持小数点的循环次数,例如 0.5 1.5
@property(nonatomic, assign) BOOL repeat;

/// 延迟开始动画
@property(nonatomic, assign) NSTimeInterval beginTime;

/// 只有设置了repeat之后这个值才有用
@property(nonatomic, assign) float repeatCount;

/// 只有设置了repeat之后这个值才有用。如果YES,则往前做动画之后自动往后做动画,默认NO
@property(nonatomic, assign) BOOL autoreverses;

/// 做动画的block,适用于只有一个属性需要做动画,curValue是经过计算后当前帧的值
@property(nonatomic, copy) void (^animation)(id curValue);

/// 做动画的block,适用于多个属性做动画,需要在block里面自己计算当前帧的所有属性的值
@property(nonatomic, copy) void (^animations)(QMUIDisplayLinkAnimation *animation, CGFloat curTime);

- (instancetype)initWithDuration:(NSTimeInterval)duration
                          easing:(QMUIAnimationEasings)easing
                       fromValue:(id)fromValue
                         toValue:(id)toValue
                       animation:(void (^)(id curValue))animation;

- (instancetype)initWithDuration:(NSTimeInterval)duration
                          easing:(QMUIAnimationEasings)easing
                      animations:(void (^)(QMUIDisplayLinkAnimation *animation, CGFloat curTime))animations;

/// 开始动画,无论是第一次做动画或者暂停之后再重新做动画,都调用这个方法
- (void)startAnimation;

/// 停止动画,CADisplayLink 对象会被移出
- (void)stopAnimation;

/// 即将开始做动画
@property(nonatomic, copy) void (^willStartAnimation)(void);

/// 动画结束
@property(nonatomic, copy) void (^didStopAnimation)(void);

@end

Undocumented

  • Undocumented

    Declaration

    Objective-C

    @property(nonatomic, strong, readonly) CADisplayLink *displayLink

    Swift

    var displayLink: CADisplayLink! { get }
  • Undocumented

    Declaration

    Objective-C

    @property(nonatomic, strong) id fromValue

    Swift

    var fromValue: Any! { get set }
  • Undocumented

    Declaration

    Objective-C

    @property(nonatomic, strong) id toValue

    Swift

    var toValue: Any! { get set }
  • 动画时间

    Declaration

    Objective-C

    @property (nonatomic) NSTimeInterval duration;

    Swift

    var duration: TimeInterval { get set }
  • 动画曲线

    Declaration

    Objective-C

    @property (nonatomic) QMUIAnimationEasings easing;

    Swift

    var easing: QMUIAnimationEasings { get set }
  • 是否需要重复,如果设置为YES,那么会无限重复动画,默认NO TODO: 目前功能上不支持小数点的循环次数,例如 0.5 1.5

    Declaration

    Objective-C

    @property (nonatomic) BOOL repeat;

    Swift

    var `repeat`: Bool { get set }
  • 延迟开始动画

    Declaration

    Objective-C

    @property (nonatomic) NSTimeInterval beginTime;

    Swift

    var beginTime: TimeInterval { get set }
  • 只有设置了repeat之后这个值才有用

    Declaration

    Objective-C

    @property (nonatomic) float repeatCount;

    Swift

    var repeatCount: Float { get set }
  • 只有设置了repeat之后这个值才有用。如果YES,则往前做动画之后自动往后做动画,默认NO

    Declaration

    Objective-C

    @property (nonatomic) BOOL autoreverses;

    Swift

    var autoreverses: Bool { get set }
  • 做动画的block,适用于只有一个属性需要做动画,curValue是经过计算后当前帧的值

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(id) animation;

    Swift

    var animation: ((Any?) -> Void)! { get set }
  • 做动画的block,适用于多个属性做动画,需要在block里面自己计算当前帧的所有属性的值

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^) (QMUIDisplayLinkAnimation *, CGFloat) animations;

    Swift

    var animations: ((QMUIDisplayLinkAnimation?, CGFloat) -> Void)! { get set }
  • Undocumented

    Declaration

    Objective-C

    - (instancetype)initWithDuration:(NSTimeInterval)duration
                              easing:(QMUIAnimationEasings)easing
                           fromValue:(id)fromValue
                             toValue:(id)toValue
                           animation:(void (^)(id curValue))animation;

    Swift

    init!(duration: TimeInterval, easing: QMUIAnimationEasings, fromValue: Any!, toValue: Any!, animation: ((Any?) -> Void)!)
  • Undocumented

    Declaration

    Objective-C

    - (instancetype)initWithDuration:(NSTimeInterval)duration
                              easing:(QMUIAnimationEasings)easing
                          animations:(void (^)(QMUIDisplayLinkAnimation *animation, CGFloat curTime))animations;

    Swift

    init!(duration: TimeInterval, easing: QMUIAnimationEasings, animations: ((QMUIDisplayLinkAnimation?, CGFloat) -> Void)!)
  • 开始动画,无论是第一次做动画或者暂停之后再重新做动画,都调用这个方法

    Declaration

    Objective-C

    - (void)startAnimation;

    Swift

    func startAnimation()
  • 停止动画,CADisplayLink 对象会被移出

    Declaration

    Objective-C

    - (void)stopAnimation;

    Swift

    func stopAnimation()
  • 即将开始做动画

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(void) willStartAnimation;

    Swift

    var willStartAnimation: (() -> Void)! { get set }
  • 动画结束

    Declaration

    Objective-C

    @property (nonatomic, copy) void (^)(void) didStopAnimation;

    Swift

    var didStopAnimation: (() -> Void)! { get set }

ConvenienceClassMethod

  • Undocumented

    Declaration

    Objective-C

    + (instancetype)springAnimateWithFromValue:(id)fromValue
                                       toValue:(id)toValue
                                     animation:(void (^)(id curValue))animation
                                  createdBlock:(void (^)(QMUIDisplayLinkAnimation *animation))createdBlock;

    Swift

    class func springAnimateWith(fromValue: Any!, toValue: Any!, animation: ((Any?) -> Void)!, createdBlock: ((QMUIDisplayLinkAnimation?) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)animateWithDuration:(NSTimeInterval)duration
                                 easing:(QMUIAnimationEasings)easing
                              fromValue:(id)fromValue
                                toValue:(id)toValue
                              animation:(void (^)(id curValue))animation;

    Swift

    class func animate(withDuration duration: TimeInterval, easing: QMUIAnimationEasings, fromValue: Any!, toValue: Any!, animation: ((Any?) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)animateWithDuration:(NSTimeInterval)duration
                                 easing:(QMUIAnimationEasings)easing
                              fromValue:(id)fromValue
                                toValue:(id)toValue
                              animation:(void (^)(id curValue))animation
                           createdBlock:(void (^)(QMUIDisplayLinkAnimation *animation))createdBlock;

    Swift

    class func animate(withDuration duration: TimeInterval, easing: QMUIAnimationEasings, fromValue: Any!, toValue: Any!, animation: ((Any?) -> Void)!, createdBlock: ((QMUIDisplayLinkAnimation?) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)animateWithDuration:(NSTimeInterval)duration
                                 easing:(QMUIAnimationEasings)easing
                              fromValue:(id)fromValue
                                toValue:(id)toValue
                              animation:(void (^)(id curValue))animation
                           createdBlock:(void (^)(QMUIDisplayLinkAnimation *animation))createdBlock
                           didStopBlock:(void (^)(QMUIDisplayLinkAnimation *animation))didStopBlock;

    Swift

    class func animate(withDuration duration: TimeInterval, easing: QMUIAnimationEasings, fromValue: Any!, toValue: Any!, animation: ((Any?) -> Void)!, createdBlock: ((QMUIDisplayLinkAnimation?) -> Void)!, didStop didStopBlock: ((QMUIDisplayLinkAnimation?) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)springAnimateWithAnimations:(void (^)(QMUIDisplayLinkAnimation *animation, CGFloat curTime))animations
                                   createdBlock:(void (^)(QMUIDisplayLinkAnimation *animation))createdBlock;

    Swift

    class func springAnimate(animations: ((QMUIDisplayLinkAnimation?, CGFloat) -> Void)!, createdBlock: ((QMUIDisplayLinkAnimation?) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)animateWithDuration:(NSTimeInterval)duration
                                 easing:(QMUIAnimationEasings)easing
                             animations:(void (^)(QMUIDisplayLinkAnimation *animation, CGFloat curTime))animations;

    Swift

    class func animate(withDuration duration: TimeInterval, easing: QMUIAnimationEasings, animations: ((QMUIDisplayLinkAnimation?, CGFloat) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)animateWithDuration:(NSTimeInterval)duration
                                 easing:(QMUIAnimationEasings)easing
                             animations:(void (^)(QMUIDisplayLinkAnimation *animation, CGFloat curTime))animations
                           createdBlock:(void (^)(QMUIDisplayLinkAnimation *animation))createdBlock;

    Swift

    class func animate(withDuration duration: TimeInterval, easing: QMUIAnimationEasings, animations: ((QMUIDisplayLinkAnimation?, CGFloat) -> Void)!, createdBlock: ((QMUIDisplayLinkAnimation?) -> Void)!) -> Self!
  • Undocumented

    Declaration

    Objective-C

    + (instancetype)animateWithDuration:(NSTimeInterval)duration
                                 easing:(QMUIAnimationEasings)easing
                             animations:(void (^)(QMUIDisplayLinkAnimation *animation, CGFloat curTime))animations
                           createdBlock:(void (^)(QMUIDisplayLinkAnimation *animation))createdBlock
                           didStopBlock:(void (^)(QMUIDisplayLinkAnimation *animation))didStopBlock;

    Swift

    class func animate(withDuration duration: TimeInterval, easing: QMUIAnimationEasings, animations: ((QMUIDisplayLinkAnimation?, CGFloat) -> Void)!, createdBlock: ((QMUIDisplayLinkAnimation?) -> Void)!, didStop didStopBlock: ((QMUIDisplayLinkAnimation?) -> Void)!) -> Self!