Time slider selector PM/AM judgment

Friends who raise kittens come to my shop! Douyin mall search #早晚早得的猫小店子

TimeSlider

Time slider dragging, adding gesture dragging

You can press and drag in the middle of the left and right to change the time parameters

- (void)commitTranslationDrag:(UIPanGestureRecognizer *)drag{
    CGPoint newPosition = [drag translationInView:drag.view];
    CGFloat absX = fabs(newPosition.x);
    CGFloat absY = fabs(newPosition.y);
    CGPoint newlocation = [drag locationInView:drag.view];
    CGRect frame = self.sleepView.frame;
//    NSLog(@"self.sleepView.endX = %f",self.sleepView.endX);
//    NSLog(@"self.sleepView.x = %f",self.sleepView.x);
//    NSLog(@"drag.view.center.x = %f",drag.view.center.x);
//    NSLog(@"newPosition.x = %f",newPosition.x);
//    NSLog(@"实际滑动距离 = %f",absX);
    NSLog(@"设定滑动距离 = %f",kLineW);
//    NSLog(@"手指触摸x点 = %f",newlocation.x);
//    NSLog(@"左边范围 = %f",frame.size.width*0.25);
    NSLog(@"右边触摸范围 = %f",frame.size.width*0.75);
    NSLog(@"BeganPoint -- %lf",self.beganPoint);
    NSLog(@"---------------------------------------");
    // 设置滑动有效距离
    if (MAX(absX, absY) < kLineW)
        return;
    
 
    
    /**
     手指触摸范围
     当前图层宽度
     左边25%
     右边75%
     判断左滑
     判断右滑
     */
    if (frame.size.width<=kLineW*8) {
        if (self.beganPoint < frame.size.width*0.5) {//左边25%
            if (absX > absY ) {
                if (newPosition.x<0) {
                    //向左滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = -(kLineW) + drag.view.center.x;
                    newSize.width += (kLineW);
                    newPosition.y = 60;
                    if (self.sleepView.frame.origin.x<kLineW) {
                        return;
                    }
                    drag.view.center = newPosition;
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.size = newSize;
                }else{
                    //向右滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x += drag.view.center.x;
                    newPosition.y = 60;
                    newSize.width -= (kLineW);
                    if (newSize.width<=kLineW*8) {
                        return;
                    }
                    
                    drag.view.center = newPosition;
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.size = newSize;
                }
            }
        }else if (self.beganPoint >= frame.size.width*0.5){//右边75%
            if (absX > absY ) {
                if (newPosition.x<0) {
                    //向左滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = drag.view.center.x;
                    newPosition.y = 60;
                    newSize.width -= kLineW;
                    if (newSize.width<=kLineW*8) {
                        return;
                    }
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.size = newSize;
                    
                }else{
                    //向右滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = drag.view.center.x;
                    newPosition.y = 60;
                    if (self.sleepView.endX>=kW-19*2) {
                        return;
                    }
                    newSize.width += kLineW;
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.size = newSize;
                    self.beganPoint = self.beganPoint + kLineW;
                }
            }
        }
    }else{
        
        if (self.beganPoint < frame.size.width*0.25) {//左边25%
            if (absX > absY ) {
                if (newPosition.x<0) {
                    if (self.sleepView.frame.origin.x<kLineW) {
                        return;
                    }
                    //向左滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = -(kLineW) + drag.view.center.x;
                    newSize.width += (kLineW*2);
                    newPosition.y = 60;
                    drag.view.center = newPosition;
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.width = self.sleepView.width + kLineW;
                    
                }else{
                    //向右滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = kLineW + drag.view.center.x;
                    newPosition.y = 60;
                    newSize.width -= (kLineW*2);
                    if (newSize.width+kLineW*2<=kLineW * 8) {
                        return;
                    }
                    drag.view.center = newPosition;
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.width = self.sleepView.width - kLineW;
                }
            }
        }else if (self.beganPoint >= frame.size.width*0.75){//右边75%
            if (absX > absY ) {
                if (newPosition.x<0) {
                    //向左滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = drag.view.center.x;
                    newPosition.y = 60;
                    newSize.width -= kLineW;
                    if (newSize.width+kLineW<=kLineW * 8) {
                        return;
                    }
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.width = self.sleepView.width - kLineW;
                }else{
                    if (self.sleepView.endX>=kW-19*2) {
                        return;
                    }
                    //向右滑动
                    CGSize newSize = drag.view.frame.size;
                    newPosition.x = drag.view.center.x;
                    newPosition.y = 60;
                    newSize.width += kLineW;
                    if (newSize.width>=kLineW * kLineCount) {
                        return;
                    }
                    self.beganPoint = self.beganPoint + kLineW;
                    [drag setTranslation:CGPointZero inView:drag.view];
                    self.sleepView.width = self.sleepView.width + kLineW;
                }
            }
        }else{//不改变宽度
            if (absX > absY ) {
                if (newPosition.x<0) {
                    if (self.sleepView.frame.origin.x<kLineW) {
                        return;
                    }
                    //向左滑动
                    newPosition.x = -(kLineW) + drag.view.center.x;
                    newPosition.y = 60;
                    drag.view.center = newPosition;
                    [drag setTranslation:CGPointZero inView:drag.view];
                }else{
                    if (self.sleepView.endX>=kW-19*2) {
                        return;
                    }
                    //向右滑动
                    newPosition.x = kLineW + drag.view.center.x;
                    newPosition.y = 60;
                    drag.view.center = newPosition;
                    [drag setTranslation:CGPointZero inView:drag.view];
                }
            }
        }
    }
    
    self.asleepLabel.text = [self getAsleepTime:self.sleepView.frame.origin.x];
    self.awakelabel.text = [self getAsleepTime:self.sleepView.frame.origin.x+self.sleepView.frame.size.width];
    [self updateViewWidth:self.sleepView.frame.size.width-kLineW*4];
    self.rightView.x = self.sleepView.width - kLineW*4 - kLineW;
}

Guess you like

Origin blog.csdn.net/zxc8890304/article/details/128614035