Skip to content

Instantly share code, notes, and snippets.

@ntnmrndn
Created February 13, 2014 17:09
Show Gist options
  • Save ntnmrndn/8979321 to your computer and use it in GitHub Desktop.
Save ntnmrndn/8979321 to your computer and use it in GitHub Desktop.
-(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