// // AMPopTip+Entrance.m // AMPopTip // // Created by Andrea Mazzini on 10/06/15. // Copyright (c) 2015 Fancy Pixel. All rights reserved. // #import "AMPopTip+Entrance.h" @implementation AMPopTip (Entrance) - (void)performEntranceAnimation:(void (^)())completion { switch (self.entranceAnimation) { case AMPopTipEntranceAnimationScale: { [self entranceScale:completion]; break; } case AMPopTipEntranceAnimationTransition: { [self entranceTransition:completion]; break; } case AMPopTipEntranceAnimationCustom: { [self.containerView addSubview:self]; if (self.entranceAnimationHandler) { self.entranceAnimationHandler(^{ completion(); }); } } case AMPopTipEntranceAnimationNone: { [self.containerView addSubview:self]; completion(); break; } default: { [self.containerView addSubview:self]; completion(); break; } } } - (void)entranceTransition:(void (^)())completion { self.transform = CGAffineTransformMakeScale(0.6, 0.6); switch (self.direction) { case AMPopTipDirectionUp: self.transform = CGAffineTransformTranslate(self.transform, 0, -self.fromFrame.origin.y); break; case AMPopTipDirectionDown: self.transform = CGAffineTransformTranslate(self.transform, 0, (self.containerView.frame.size.height - self.fromFrame.origin.y)); break; case AMPopTipDirectionLeft: self.transform = CGAffineTransformTranslate(self.transform, -self.fromFrame.origin.x, 0); break; case AMPopTipDirectionRight: self.transform = CGAffineTransformTranslate(self.transform, (self.containerView.frame.size.width - self.fromFrame.origin.x), 0); break; case AMPopTipDirectionNone: self.transform = CGAffineTransformTranslate(self.transform, 0, (self.containerView.frame.size.height - self.fromFrame.origin.y)); break; default: break; } [self.containerView addSubview:self]; [UIView animateWithDuration:self.animationIn delay:self.delayIn usingSpringWithDamping:0.6 initialSpringVelocity:1.5 options:(UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState) animations:^{ self.transform = CGAffineTransformIdentity; } completion:^(BOOL completed){ if (completed) { completion(); } }]; } - (void)entranceScale:(void (^)())completion { self.transform = CGAffineTransformMakeScale(0, 0); [self.containerView addSubview:self]; [UIView animateWithDuration:self.animationIn delay:self.delayIn usingSpringWithDamping:0.6 initialSpringVelocity:1.5 options:(UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState) animations:^{ self.transform = CGAffineTransformIdentity; } completion:^(BOOL completed){ if (completed) { completion(); } }]; } @end