@@ -589,46 +589,57 @@ -(void)setMaximumRightDrawerWidth:(CGFloat)width animated:(BOOL)animated complet
589589}
590590
591591- (void )setMaximumDrawerWidth : (CGFloat)width forSide : (MMDrawerSide)drawerSide animated : (BOOL )animated completion : (void (^)(BOOL finished))completion {
592- NSParameterAssert (width > 0 );
593- NSParameterAssert (drawerSide != MMDrawerSideNone);
594592
595- UIViewController *sideDrawerViewController = [self sideDrawerViewControllerForSide: drawerSide];
596- CGFloat oldWidth = 0 .f ;
597- NSInteger drawerSideOriginCorrection = 1 ;
598- if (drawerSide == MMDrawerSideLeft) {
599- oldWidth = _maximumLeftDrawerWidth;
600- _maximumLeftDrawerWidth = width;
601- }
602- else if (drawerSide == MMDrawerSideRight){
603- oldWidth = _maximumRightDrawerWidth;
604- _maximumRightDrawerWidth = width;
605- drawerSideOriginCorrection = -1 ;
593+ if (self.isAnimatingDrawer ){
594+ if (completion){
595+ completion (NO );
596+ }
606597 }
607-
608- CGFloat distance = ABS (width-oldWidth);
609- NSTimeInterval duration = [self animationDurationForAnimationDistance: distance];
610-
611- if (self.openSide == drawerSide){
612- CGRect newCenterRect = self.centerContainerView .frame ;
613- newCenterRect.origin .x = drawerSideOriginCorrection*width;
614- [UIView
615- animateWithDuration: (animated?duration: 0 )
616- delay: 0.0
617- options: UIViewAnimationOptionCurveEaseInOut
618- animations: ^{
619- [self .centerContainerView setFrame: newCenterRect];
620- [sideDrawerViewController.view setFrame: sideDrawerViewController.mm_visibleDrawerFrame];
621- }
622- completion: ^(BOOL finished) {
623- if (completion != nil ){
624- completion (finished);
598+ else {
599+
600+ NSParameterAssert (width > 0 );
601+ NSParameterAssert (drawerSide != MMDrawerSideNone);
602+
603+ UIViewController *sideDrawerViewController = [self sideDrawerViewControllerForSide: drawerSide];
604+ CGFloat oldWidth = 0 .f ;
605+ NSInteger drawerSideOriginCorrection = 1 ;
606+ if (drawerSide == MMDrawerSideLeft) {
607+ oldWidth = _maximumLeftDrawerWidth;
608+ _maximumLeftDrawerWidth = width;
609+ }
610+ else if (drawerSide == MMDrawerSideRight){
611+ oldWidth = _maximumRightDrawerWidth;
612+ _maximumRightDrawerWidth = width;
613+ drawerSideOriginCorrection = -1 ;
614+ }
615+
616+ CGFloat distance = ABS (width-oldWidth);
617+ NSTimeInterval duration = [self animationDurationForAnimationDistance: distance];
618+
619+ if (self.openSide == drawerSide){
620+ CGRect newCenterRect = self.centerContainerView .frame ;
621+ newCenterRect.origin .x = drawerSideOriginCorrection*width;
622+ [UIView
623+ animateWithDuration: (animated?duration: 0 )
624+ delay: 0.0
625+ options: UIViewAnimationOptionCurveEaseInOut
626+ animations: ^{
627+ [self .centerContainerView setFrame: newCenterRect];
628+ [sideDrawerViewController.view setFrame: sideDrawerViewController.mm_visibleDrawerFrame];
625629 }
626- }];
627- }
628- else {
629- [sideDrawerViewController.view setFrame: sideDrawerViewController.mm_visibleDrawerFrame];
630- if (completion != nil ){
631- completion (YES );
630+ completion: ^(BOOL finished) {
631+ [self setAnimatingDrawer: NO ];
632+ if (completion != nil ){
633+ completion (finished);
634+ }
635+ }];
636+ }
637+ else {
638+ [sideDrawerViewController.view setFrame: sideDrawerViewController.mm_visibleDrawerFrame];
639+ [self setAnimatingDrawer: NO ];
640+ if (completion != nil ){
641+ completion (YES );
642+ }
632643 }
633644 }
634645}
0 commit comments