MMTweenAnimation is a extension of POP(from facebook) custom animation. Inspired by tweaner(https://code.google.com/p/tweaner), MMTweanerAnimation provide 10 types of custom animation while using POP.
Animation functions are based on Easing functions
Easing functions specify the rate of change of a parameter over time and allow you to apply custom mathematical formulas to your animations.
The preferred way of installation is via CocoaPods. Just add
pod 'MMTweenAnimation'
and run pod install
. It will install the most recent version of MMTweenAnimation.
If you would like to use the latest code of MMTweenAnimation use:
pod 'MMTweenAnimation', :head
There are 10 concrete animation types:
Back | Bounce | Circ | Cubic | Elastic |
---|---|---|---|---|
Expo | Quad | Quart | Quint | Sine |
---|---|---|---|---|
To apply a MMTweenAnimation, you must configure it by:
@property (nonatomic, copy) MMTweenAnimationBlock animationBlock;
@property (nonatomic, assign) double fromValue;
@property (nonatomic, assign) double toValue;
@property (nonatomic, assign) double duration; //default: 0.3
@property (nonatomic, assign) MMTweenFunctionType functionType; //default: MMTweenFunctionBounce
@property (nonatomic, assign) MMTweenEasingType easingType; //default: MMTweenEasingOut
for example:
MMTweenAnimation *anim = [MMTweenAnimation animation];
anim.functionType = MMTweenFunctionBounce;
anim.easingType = MMTweenEasingOut;
anim.duration = 2.0f;
anim.fromValue = 0;
anim.toValue = 200;
anim.animationBlock = ^(double c,double d,double v,id target,MMTweenAnimation *animation)
{
//c: current time, from the beginning of animation
//d: duration, always bigger than c
//v: value, after the change at current time
UIView *t = (UIView*)target;
t.center = CGPointMake(t.x, v);
};
[targetView pop_addAnimation:anim forKey:@"center.y"];
v1.0 you can custom or simply use it by
@interface MMTweenAnimation : POPCustomAnimation
@property (nonatomic, copy) MMTweenAnimationBlock animationBlock;
@property (nonatomic, assign) double fromValue;
@property (nonatomic, assign) double toValue;
@property (nonatomic, assign) double duration;
@property (nonatomic, assign) MMTweenFunctionType functionType;
@property (nonatomic, assign) MMTweenEasingType easingType;
+ (instancetype)animation;
@end