Friends who raise kittens come to my shop! Douyin mall search #早晚早得的猫小店子
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;
}