Skip to content

Instantly share code, notes, and snippets.

@izackp
Created May 13, 2014 12:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save izackp/eb5c6a6cf9f52d6d1f99 to your computer and use it in GitHub Desktop.
Save izackp/eb5c6a6cf9f52d6d1f99 to your computer and use it in GitHub Desktop.
A simple rubber band pop animation I created.
#import <UIKit/UIKit.h>
@interface UIView (Pop)
- (void)popWithMagnitude:(CGFloat)magnitude numPops:(int)numPops duration:(CGFloat)duration;
@end
#import "UIView+Pop.h"
@implementation UIView (Pop)
- (void)popWithMagnitude:(CGFloat)magnitude numPops:(int)numPops duration:(CGFloat)duration {
numPops -=1;
void (^growAnimation)() = ^{
self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0f + magnitude, 1.0f + magnitude);
};
void (^shrinkAnimation)() = ^{
self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0f - magnitude * 0.75f, 1.0f - magnitude * 0.75f);
};
void (^shrinkCompletion)(BOOL) = ^(BOOL finished) {
if (numPops == 0)
{
[UIView animateWithDuration:duration * 1.5f animations:^{
self.transform = CGAffineTransformIdentity;
} completion:nil];
return;
}
[self popWithMagnitude:magnitude * 0.5f numPops:numPops duration:duration * 1.5f];
};
void (^growCompletion)(BOOL) = ^(BOOL finished) {
[UIView animateWithDuration:duration * 1.25f animations:shrinkAnimation completion:shrinkCompletion];
};
[UIView animateWithDuration:duration animations:growAnimation completion:growCompletion];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment