Created
February 13, 2014 17:09
-
-
Save ntnmrndn/8979321 to your computer and use it in GitHub Desktop.
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
-(void)panGestureCallback:(UIPanGestureRecognizer *)panGesture{ | |
static MMDrawerSide plow = MMDrawerSideNone; | |
switch (panGesture.state) { | |
case UIGestureRecognizerStateBegan: | |
NSLog(@"BEEEGAAAN"); | |
plow = MMDrawerSideNone; | |
self.startingPanRect = self.centerContainerView.frame; | |
case UIGestureRecognizerStateChanged:{ | |
NSLog(@"CHAAAAANGE"); | |
CGRect newFrame = self.startingPanRect; | |
CGPoint translatedPoint = [panGesture translationInView:self.centerContainerView]; | |
newFrame.origin.x = [self roundedOriginXForDrawerConstriants:CGRectGetMinX(self.startingPanRect)+translatedPoint.x]; | |
newFrame = CGRectIntegral(newFrame); | |
CGFloat xOffset = newFrame.origin.x; | |
NSLog(@"%@", NSStringFromCGRect(newFrame)); | |
MMDrawerSide visibleSide = MMDrawerSideNone; | |
CGFloat percentVisible = 0.0; | |
NSLog(@"%@", NSStringFromCGRect(newFrame)); | |
if(xOffset > 0 && self.openSide != MMDrawerSideRight){ | |
if (plow == MMDrawerSideNone || plow == MMDrawerSideLeft) | |
{ | |
plow = visibleSide = MMDrawerSideLeft; | |
percentVisible = xOffset/self.maximumLeftDrawerWidth; | |
} else { | |
newFrame.origin.x = 0; | |
visibleSide = self.openSide; | |
} | |
} | |
else if(xOffset < 0 && self.openSide != MMDrawerSideLeft){ | |
if (plow == MMDrawerSideNone || plow == MMDrawerSideRight) | |
{ | |
plow = visibleSide = MMDrawerSideRight; | |
percentVisible = ABS(xOffset)/self.maximumRightDrawerWidth; | |
} else { | |
newFrame.origin.x = 0; | |
visibleSide = self.openSide; | |
} | |
} | |
NSLog(@"%@", NSStringFromCGRect(newFrame)); | |
NSLog(@"%f", percentVisible); | |
UIViewController * visibleSideDrawerViewController = [self sideDrawerViewControllerForSide:visibleSide]; | |
if(self.openSide != visibleSide){ | |
//Handle disappearing the visible drawer | |
UIViewController * sideDrawerViewController = [self sideDrawerViewControllerForSide:self.openSide]; | |
[sideDrawerViewController beginAppearanceTransition:NO animated:NO]; | |
[sideDrawerViewController endAppearanceTransition]; | |
//Drawer is about to become visible | |
[self prepareToPresentDrawer:visibleSide animated:NO]; | |
[visibleSideDrawerViewController endAppearanceTransition]; | |
[self setOpenSide:visibleSide]; | |
} | |
else if(visibleSide == MMDrawerSideNone){ | |
[self setOpenSide:MMDrawerSideNone]; | |
} | |
[self updateDrawerVisualStateForDrawerSide:visibleSide percentVisible:percentVisible]; | |
[self.centerContainerView setCenter:CGPointMake(CGRectGetMidX(newFrame), CGRectGetMidY(newFrame))]; | |
break; | |
} | |
case UIGestureRecognizerStateCancelled: | |
case UIGestureRecognizerStateEnded:{ | |
NSLog(@"EEEENDDD"); | |
self.startingPanRect = CGRectNull; | |
CGPoint velocity = [panGesture velocityInView:self.childControllerContainerView]; | |
[self finishAnimationForPanGestureWithXVelocity:velocity.x completion:^(BOOL finished) { | |
if(self.gestureCompletion){ | |
self.gestureCompletion(self, panGesture); | |
} | |
}]; | |
break; | |
} | |
default: | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment