From c04469ef19936fd57f0b771856516d06ddd177d8 Mon Sep 17 00:00:00 2001 From: saint Date: Sun, 9 Jun 2024 10:32:59 -0400 Subject: [PATCH] swipe with drag offset works now --- gloss/ContentView.swift | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/gloss/ContentView.swift b/gloss/ContentView.swift index b427335..53a9bc3 100644 --- a/gloss/ContentView.swift +++ b/gloss/ContentView.swift @@ -372,6 +372,8 @@ struct ContentView: View { .onChanged { value in // Calculate the offset + let margin = CGFloat(30) + var newOffset = value.translation.width if startSwipeState == nil { if pulledOut.width == 0 { @@ -438,25 +440,28 @@ struct ContentView: View { // if mainSwipe.width < -margin && pulledOut.width <= 0 { - // if mainSwipe.width < -margin && pulledOut.width <= 0 { - // dragOffset = margin + mainSwipe.width + pulledOut.width - // } + if mainSwipe.width < -margin && pulledOut.width <= 0 { + dragOffset = margin + mainSwipe.width + pulledOut.width + } - // if mainSwipe.width > 0 && pulledOut.width < 0 { - // dragOffset = margin + mainSwipe.width + pulledOut.width - // } + if mainSwipe.width > 0 && pulledOut.width < 0 { + dragOffset = margin + mainSwipe.width + pulledOut.width + } } .onEnded { _ in var finalSwipe = CGFloat(0) let swipeLeftFinal = CGFloat(-200) let swipeRightFinal = CGFloat(110) - // let margin = CGFloat(30) + + let margin = CGFloat(30) + var setDragOffset = CGFloat(0) if startSwipeState == .center { if startSwipeDir == .right { finalSwipe = swipeRightFinal } else { finalSwipe = swipeLeftFinal + setDragOffset = margin + swipeLeftFinal } } else if startSwipeState == .right { finalSwipe = .zero @@ -470,6 +475,7 @@ struct ContentView: View { if startSwipeDir == .left { finalSwipe = swipeLeftFinal + setDragOffset = margin + swipeLeftFinal } else { finalSwipe = .zero } @@ -478,9 +484,6 @@ struct ContentView: View { startSwipeState = nil startSwipeDir = nil - // var setDragOffset = CGFloat(0) - - // if mainSwipe.width < 0 && pulledOut.width > 0 { // setPulledOutWith = CGFloat(0) // } else if mainSwipe.width > 0 && pulledOut.width < 0 { @@ -496,8 +499,8 @@ struct ContentView: View { withAnimation(.spring(response: 0.2)) { pulledOut.width = finalSwipe - // dragOffset = setDragOffset - mainSwipe = .zero + dragOffset = setDragOffset + mainSwipe = .zero } } )