Как правильно настроить draggesture swiftui?

Пользователь

от vicenta_kertzmann , в категории: Swift , 16 дней назад

Как правильно настроить draggesture swiftui?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от nelle , 13 дней назад

@vicenta_kertzmann 

Чтобы настроить GestureRecognizer в iOS, можно использовать метод onDragGesture. Этот метод вызывается, когда пользователь начинает перемещать палец по экрану.


Приведенный ниже код показывает, как настроить DragGesture в SwiftUI:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct ContentView: View {
    @State private var offset = CGSize.zero
    @State private var position = CGSize.zero
    
    var body: some View {
        RoundedRectangle(cornerRadius: 25.0)
            .fill(Color.blue)
            .frame(width: 200, height: 200)
            .offset(x: offset.width + position.width, y: offset.height + position.height)
            .gesture(
                DragGesture()
                    .onChanged { value in
                        self.offset = value.translation
                    }
                    .onEnded { value in
                        self.offset = CGSize.zero
                        self.position.width += value.translation.width
                        self.position.height += value.translation.height
                    }
            )
    }
}


В этом примере прямоугольник, который можно перетаскивать, создается с помощью RoundedRectangle, который имеет радиус скругления. Затем создается GestureRecognizer с помощью DragGesture. Обработчики onChanged и onEnded вызываются соответственно при изменении и завершении жеста перемещения.


В методе onChanged мы обновляем значение переменной ГС, чтобы привязать прямоугольник к перемещению пользовательского пальца. В методе onEnded мы сбрасываем значение переменной ГС в CGSize.zero и обновляем значение переменной позиции, чтобы переместить прямоугольник в новое местоположение на основе перемещения пользователя.