swiping a bit better
							parent
							
								
									3af58e417f
								
							
						
					
					
						commit
						b8764b5577
					
				| 
						 | 
				
			
			@ -399,7 +399,7 @@ struct ContentView: View {
 | 
			
		|||
                .offset(x: pulledOut.width)
 | 
			
		||||
                .offset(x: mainSwipe.width)
 | 
			
		||||
                .highPriorityGesture(
 | 
			
		||||
                    DragGesture(minimumDistance: 30)
 | 
			
		||||
                    DragGesture(minimumDistance: 20)
 | 
			
		||||
                        .updating($dragGestureActive) { value, state, _ in
 | 
			
		||||
                            print("pop here")
 | 
			
		||||
                            state = value.translation
 | 
			
		||||
| 
						 | 
				
			
			@ -430,35 +430,18 @@ struct ContentView: View {
 | 
			
		|||
                            }
 | 
			
		||||
 | 
			
		||||
                            // Apply resistance if out of bounds
 | 
			
		||||
                            var maxOffsetRight: CGFloat = 150
 | 
			
		||||
                            let maxRight: CGFloat = 140
 | 
			
		||||
                            let finalRight: CGFloat = 110
 | 
			
		||||
                            let rightDiff = maxRight - finalRight
 | 
			
		||||
                            var maxOffsetLeft: CGFloat = -200
 | 
			
		||||
 | 
			
		||||
                            // if startSwipeState == .right {
 | 
			
		||||
                            //     if startSwipeDir == .right {
 | 
			
		||||
                            //         maxOffsetRight = .zero
 | 
			
		||||
                            //         maxOffsetLeft = .zero
 | 
			
		||||
                            //     } else if startSwipeDir == .left {
 | 
			
		||||
                            //         maxOffsetRight = CGFloat(110)
 | 
			
		||||
                            //         maxOffsetLeft = CGFloat(-30)
 | 
			
		||||
                            //     }
 | 
			
		||||
                            // } else if startSwipeState == .left {
 | 
			
		||||
 | 
			
		||||
                            //     if startSwipeDir == .left {
 | 
			
		||||
                            //         maxOffsetLeft = .zero
 | 
			
		||||
                            //         maxOffsetRight = .zero
 | 
			
		||||
                            //     } else if startSwipeDir == .right {
 | 
			
		||||
                            //         maxOffsetLeft = CGFloat(200)
 | 
			
		||||
                            //         maxOffsetRight = CGFloat(10)
 | 
			
		||||
                            //     }
 | 
			
		||||
                            // }
 | 
			
		||||
 | 
			
		||||
                            if newOffset > maxOffsetRight, pulledOut.width == 0 {
 | 
			
		||||
                                // newOffset = maxOffsetRight + rubberBandEffect(newOffset)
 | 
			
		||||
                                newOffset = maxOffsetRight + rubberBandEffect(newOffset - maxOffsetRight)
 | 
			
		||||
                            if newOffset > maxRight , pulledOut.width == 0 {
 | 
			
		||||
                                // newOffset = maxRight + rubberBandEffect(newOffset)
 | 
			
		||||
                                newOffset = maxRight + rubberBandEffect(newOffset - maxRight)
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            if newOffset > 0, pulledOut.width > 0 {
 | 
			
		||||
                                newOffset = rubberBandEffect(newOffset)
 | 
			
		||||
                            if newOffset > rightDiff, pulledOut.width > 0 {
 | 
			
		||||
                                newOffset = rightDiff + rubberBandEffect(newOffset - rightDiff)
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            if newOffset < maxOffsetLeft, pulledOut.width == 0 {
 | 
			
		||||
| 
						 | 
				
			
			@ -584,9 +567,10 @@ struct ContentView: View {
 | 
			
		|||
 | 
			
		||||
    func handleVisibilityChanged2(_: String, change _: VisibilityChange, tracker _: VisibilityTracker<String>) {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    func rubberBandEffect(_ offset: CGFloat) -> CGFloat {
 | 
			
		||||
        let resistance: CGFloat = 0.05
 | 
			
		||||
        return 4 * log(offset + 1)
 | 
			
		||||
        return 6 * log(offset + 1)
 | 
			
		||||
        // return resistance * pow(abs(offset), 1) * (offset < 0 ? -1 : 1)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue