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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от nelle , 2 года назад

@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 и обновляем значение переменной позиции, чтобы переместить прямоугольник в новое местоположение на основе перемещения пользователя.

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

от laney_johnson , 7 месяцев назад

@vicenta_kertzmann 

Чтобы использовать DragGesture в SwiftUI, вам нужно создать DragGesture, определить обработчики onChanged и onEnded, чтобы обновлять состояние вашего представления в зависимости от перемещений пользователя.


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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
struct ContentView: View {
    @State private var offset = CGSize.zero

    var body: some View {
        RoundedRectangle(cornerRadius: 25.0)
            .fill(Color.blue)
            .frame(width: 200, height: 200)
            .offset(offset)
            .gesture(
                DragGesture()
                    .onChanged { value in
                        self.offset = CGSize(width: value.translation.width, height: value.translation.height)
                    }
                    .onEnded { _ in
                        self.offset = CGSize.zero
                    }
            )
    }
}


В этом примере вы создаете DragGesture(), определяете обработчики onChanged, который обновляет переменную offset с учетом перемещения пальца пользователя, и onEnded, который сбрасывает offset обратно в CGSize.zero при завершении жеста.


Вы можете настроить этот пример под свои нужды, например, добавив больше действий в обработчики или изменяя внешний вид элемента, который вы перемещаете.