-
-
Save bwalkin/f3cadeceb3815d62c9e2 to your computer and use it in GitHub Desktop.
iOS Code Exported from Origami
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "ViewController.h" | |
#import <POP/POP.h> | |
#import <POP/POPLayerExtras.h> | |
@interface ViewController () | |
@property (nonatomic) CGFloat photoZoomProgress; | |
@property (nonatomic) CGFloat fadeProgress; | |
@end | |
@implementation ViewController | |
// photoZoom transition | |
- (void)togglePhotoZoom:(BOOL)on { | |
POPSpringAnimation *animation = [self pop_animationForKey:@"photoZoom"]; | |
if (!animation) { | |
animation = [POPSpringAnimation animation]; | |
animation.springBounciness = 7; | |
animation.springSpeed = 2; | |
animation.property = [POPAnimatableProperty propertyWithName:@"photoZoomProgress" initializer:^(POPMutableAnimatableProperty *prop) { | |
prop.readBlock = ^(ViewController *obj, CGFloat values[]) { | |
values[0] = obj.photoZoomProgress; | |
}; | |
prop.writeBlock = ^(ViewController *obj, const CGFloat values[]) { | |
obj.photoZoomProgress = values[0]; | |
}; | |
prop.threshold = 0.001; | |
}]; | |
[self pop_addAnimation:animation forKey:@"photoZoom"]; | |
} | |
animation.toValue = on ? @(1.0) : @(0.0); | |
} | |
- (void)setPhotoZoomProgress:(CGFloat)progress { | |
_photoZoomProgress = progress; | |
CGFloat alpha = POPTransition(progress, 1, 0); | |
self.story.layer.opacity = alpha; | |
CGFloat scale = POPTransition(progress, 0.4797, 0.55); | |
POPLayerSetScaleXY(self.photo.layer, scale); | |
CGFloat yPosition = POPTransition(progress, -186, 0); | |
POPLayerSetTranslationY(self.photo.layer, POPPixelsToPoints(-yPosition)); | |
CGFloat scale2 = POPTransition(progress, 1, 0.97); | |
POPLayerSetScaleXY(self.story.layer, scale2); | |
CGFloat rotation = POPTransition(progress, 0, 30); | |
POPLayerSetRotationZ(self.photo.layer, POPDegreesToRadians(rotation)); | |
} | |
// fade transition | |
- (void)toggleFade:(BOOL)on { | |
POPSpringAnimation *animation = [self pop_animationForKey:@"fade"]; | |
if (!animation) { | |
animation = [POPSpringAnimation animation]; | |
animation.springBounciness = 15; | |
animation.springSpeed = 2; | |
animation.property = [POPAnimatableProperty propertyWithName:@"fadeProgress" initializer:^(POPMutableAnimatableProperty *prop) { | |
prop.readBlock = ^(ViewController *obj, CGFloat values[]) { | |
values[0] = obj.fadeProgress; | |
}; | |
prop.writeBlock = ^(ViewController *obj, const CGFloat values[]) { | |
obj.fadeProgress = values[0]; | |
}; | |
prop.threshold = 0.001; | |
}]; | |
[self pop_addAnimation:animation forKey:@"fade"]; | |
} | |
animation.toValue = on ? @(1.0) : @(0.0); | |
} | |
- (void)setFadeProgress:(CGFloat)progress { | |
_fadeProgress = progress; | |
CGFloat alpha2 = POPTransition(progress, 1, 0.3); | |
self.photo.layer.opacity = alpha2; | |
} | |
// Utilities | |
static inline CGFloat POPTransition(CGFloat progress, CGFloat startValue, CGFloat endValue) { | |
return startValue + (progress * (endValue - startValue)); | |
} | |
static inline CGFloat POPDegreesToRadians(CGFloat degrees) { | |
return M_PI * (degrees / 180.0); | |
} | |
static inline CGFloat POPPixelsToPoints(CGFloat pixels) { | |
static CGFloat scale = -1; | |
if (scale < 0) { | |
scale = [UIScreen mainScreen].scale; | |
} | |
return pixels / scale; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How i can make animation work on my project after integrating this code in my project