Как я могу сочинить 3 разных одновременных жеста в SwiftUI? - PullRequest
0 голосов
/ 10 апреля 2020

Пытается составить 3 одновременных жеста в SwiftUI, но SwiftUI SimultaneousGesture() работает только с 2 жестами.

Например, у меня есть базовый c Вид, например:

struct myRect: View {
    var body: some View {
        Rectangle()
            .fill(Color.red)
            .frame(width: 200, height: 200)
    }
}

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

Я предполагаю, что мне нужно будет использовать DragGesture(), RotationGesture() и MagnificationGesture(). Но я застрял, поскольку SimultaneousGesture() принимает только 2 жеста максимум. Как я могу заставить эти 3 жеста работать с моим видом?

Редактировать:

Я должен указать, что эти жесты должны работать одновременно. Это в точности как вопрос, заданный здесь: Одновременное сжатие, панорамирование и поворот текста, как Snapchat [SWIFT 3]

Однако это было для UIKit. Возможно ли это сделать в SwiftUI?

1 Ответ

0 голосов
/ 10 апреля 2020

Ваш вид myRect может иметь класс sh с другими видами. Я тестирую модификатор SimultaneousGesture(), он отлично работает, имея три жеста в любой последовательности, например удар:

struct myRect: View {
let rg = RotationGesture().onChanged({ a in
    print("Angle = \(a.degrees)")
})
let dg = DragGesture(minimumDistance: 1, coordinateSpace: .local).onChanged({ v in
    print("Translate = \(v.translation.width)")
})
let mg = MagnificationGesture().onChanged({ s in
    print("scale = \(s)")
})
var body: some View {
    Rectangle()
        .fill(Color.red)
        .frame(width: 200, height: 200)
        .simultaneousGesture(rg)
        .simultaneousGesture(mg)
        .simultaneousGesture(dg)
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...