Я пытаюсь сделать кнопку подвижной с помощью SwiftUI. Из того, как это выглядит, должно работать. Я пытался поместить Button with Text в другой ZStack, и на секунду он заработал, но как только я отпустил кнопку, перетаскивание прекратилось, и я больше не мог перетаскивать. Я заметил, что кран оставался в центре, несмотря на перемещение кнопки. Также перетаскивание выглядело глючным.
struct CircleButton: View {
@State private var dragAmount = CGSize.zero
var body: some View {
ZStack {
Button(action: performAction){
ZStack {
Circle()
.foregroundColor(.blue)
.frame(width: 100, height: 100)
Text("Move me")
.foregroundColor(.white)
.font(.system(.caption, design: .serif))
}
}
.animation(.default)
.offset(self.dragAmount)
}
.gesture(
DragGesture()
.onChanged { self.dragAmount = $0.translation})
}
func performAction(){
print("button pressed")
}
}
Я пробовал это:
struct CircleButton: View {
@State private var dragAmount = CGSize.zero
var body: some View {
ZStack {
ZStack {
Button(action: performAction){
Circle()
.foregroundColor(.blue)
.frame(width: 100, height: 100)
}
Text("Tap me")
}
.offset(self.dragAmount)
.animation(.default)
}
.gesture(
DragGesture()
.onChanged{ self.dragAmount = $0.translation})
}
func performAction(){
print("button pressed")
}
}