From 71eb343abe8d4b084dfd3c650003b0b8a1b0aaf3 Mon Sep 17 00:00:00 2001 From: Anton Date: Thu, 29 Oct 2015 23:55:01 +0300 Subject: [PATCH] Slide menu open/close animation depends on currently opening part --- SlideMenu/Source/SlideNavigationController.m | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/SlideMenu/Source/SlideNavigationController.m b/SlideMenu/Source/SlideNavigationController.m index 1e8f525..a07793e 100644 --- a/SlideMenu/Source/SlideNavigationController.m +++ b/SlideMenu/Source/SlideNavigationController.m @@ -468,6 +468,14 @@ static SlideNavigationController *singletonInstance; return NO; } +- (CGFloat)openingPart +{ + CGFloat slideOffset = self.slideOffset; + CGFloat absHorizontalLocation = (CGFloat)fabs(self.horizontalLocation); + + return MIN(1.f, absHorizontalLocation/slideOffset); +} + - (void)openMenu:(Menu)menu withCompletion:(void (^)())completion { [self openMenu:menu afterSwipe:NO withCompletion:completion]; @@ -475,7 +483,7 @@ static SlideNavigationController *singletonInstance; - (void)openMenu:(Menu)menu afterSwipe:(BOOL)afterSwipe withCompletion:(void (^)())completion { - NSTimeInterval duration = self.menuOpenAnimationDuration; + NSTimeInterval duration = self.menuOpenAnimationDuration * (1.f - [self openingPart]); [self enableTapGestureToCloseMenu:YES]; @@ -502,7 +510,7 @@ static SlideNavigationController *singletonInstance; - (void)closeMenuWithCompletion:(void (^)())completion { - NSTimeInterval duration = self.menuCloseAnimationDuration; + NSTimeInterval duration = self.menuCloseAnimationDuration * [self openingPart]; [self enableTapGestureToCloseMenu:NO];