# pragma mark - Gestures - (void)slideDraw:(UIPanGestureRecognizer *)recognizer { CGRect frame = self.viewController.drawContaintView.frame; CGFloat x = CGRectGetMinX(frame); CGPoint translatedPoint = [recognizer translationInView:self.viewController.drawContaintView]; x += translatedPoint.x; if (x > 0) { x = 0; } frame.origin.x = x; self.viewController.drawContaintView.frame = frame; if (recognizer.state == UIGestureRecognizerStateEnded){ CGRect currentFrame = self.viewController.drawContaintView.frame; if (currentFrame.origin.x < -(SCREEN_WIDTH/4.0)){ [self hideDraw]; }else { [self showDraw]; } } [recognizer setTranslation:CGPointMake(0, 0) inView:self.viewController.drawContaintView]; } //手势识别 - (void)slideShowDraw:(UIPanGestureRecognizer *)recognizer { CGPoint transPoint = [recognizer translationInView:self.view]; self.cgx += transPoint.x; CGFloat benganX; if (transPoint.x > benganX) { }else { [self.viewController.drawContaintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.3 - self.cgx/SCREEN_WIDTH* 0.3]]; } if (recognizer.state == UIGestureRecognizerStateBegan ) { CGPoint location = [recognizer locationInView:self.view]; benganX = location.x; } NSLog(@"%f%f", transPoint.x, transPoint.y); if (benganX < 50 && recognizer.state == UIGestureRecognizerStateChanged) { CGRect frame = self.viewController.drawContaintView.frame; CGFloat x = CGRectGetMinX(frame); x += transPoint.x+0.3; frame.origin.x = x; self.viewController.drawContaintView.frame = frame; } if (recognizer.state == UIGestureRecognizerStateEnded) { CGRect currentFrame = self.viewController.drawContaintView.frame; if (currentFrame.origin.x < -(SCREEN_WIDTH/4.0*3)){ [self hideDraw]; }else { [self showDraw]; } } [recognizer setTranslation:CGPointMake(0, 0) inView:self.viewController.drawContaintView]; } //弹出边栏 - (void)leftBarButtonTouched { [self.weakPkController showViewController:self.weakPkController.leftViewController]; //[revealController setMinimumWidth:220.0 maximumWidth:244.0 forViewController:self]; // revealController.delegate = self; // [self presentViewController:revealController animated:YES completion:nil]; // DLog(@"Button Touched"); // if (!self.viewController.isShowLeftView){ // [UIView animateWithDuration:0.3 animations:^{ // [self.viewController.drawContaintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]]; // [self showDraw]; // }]; // }else { // [UIView animateWithDuration:0.3 animations:^{ // [self hideDraw]; // }]; // } } //点击隐藏边栏 - (void)hideDraw:(UITapGestureRecognizer *)recognizer { CGPoint location = [recognizer locationInView:self.viewController.drawContaintView]; if (location.x > SCREEN_WIDTH/4.0*3.0) { [UIView animateWithDuration:0.3 animations:^{ [self hideDraw]; }]; } } //显示边栏 - (void)showDraw { CGFloat width = SCREEN_WIDTH; CGFloat height = SCREEN_HEIGHT-(HEADHEIGHT+TabBar_HEIGHT); // UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; // UIGraphicsBeginImageContext(screenWindow.frame.size); // [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()]; // UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [UIView animateWithDuration:0.3 animations:^{ CGRect frame = CGRectMake(0, 0, width, height); self.viewController.drawContaintView.frame = frame; self.viewController.isShowLeftView = YES; [UIView animateWithDuration:0.3 animations:^{ [self.viewController.drawContaintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]]; }]; // self.viewController.drawContaintView.layer.contents = (id)viewImage.CGImage; }]; } //隐藏边栏 - (void)hideDraw { CGFloat width = SCREEN_WIDTH; CGFloat height = SCREEN_HEIGHT-(HEADHEIGHT+TabBar_HEIGHT); [UIView animateWithDuration:0.3 animations:^{ CGRect frame = CGRectMake(-width, 0, width, height); self.viewController.drawContaintView.frame = frame; self.viewController.isShowLeftView = NO; }]; } # pragma mark - UIGestureRcognizerDelegate - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { CGPoint point = [gestureRecognizer locationInView:self.viewController.drawContaintView]; if (point.x <= SCREEN_WIDTH/4.0*3.0) { return NO; }else{ return YES; } }