我使用 .gesture 来拖动文本。
我想要发生的是剩余的字母向右移动,这样 'g' 占据第一个位置,剩余的字母向右移动。但我无法弄清楚我应该如何做到这一点。
struct TryingDrag: View {
let letters = Array("Begin Saving")
@State private var dragAmount = CGSize.zero
var body: some View {
HStack (spacing: 0) {
ForEach(0..<letters.count) { index in
let letter = String(letters[index])
LettersDrag(letter: letter)
}
}
}
}
struct LettersDrag: View {
let letter: String
@State private var dragAmount = CGSize.zero
var body: some View {
Text(letter).foregroundColor(.white)
.padding(5)
.font(.title)
.background(Color.red)
.offset(dragAmount)
.animation(.spring())
.gesture(
DragGesture()
.onChanged {
dragAmount = $0.translation
}
.onEnded { _ in
dragAmount = .zero
}
)
}
}