Я пытаюсь создать сетку из маленьких квадратов, чтобы при наведении на них пальца (или пролистывания) маленькие квадратики временно «всплывали» и тряслись. Затем, если они продолжат долго нажимать на это представление, оно откроет другое представление с дополнительной информацией.
Я подумал, что реализации жеста перетаскивания для квадратных представлений будет достаточно, но похоже, что только одно представление может захватывать жест перетаскивания одновременно.
Есть ли способ включить несколько видов для захвата жеста перетаскивания или способ реализации жеста "зависания" для iOS?
Здесь мой основной вид сетки:
import SwiftUI
struct ContentView: View {
@EnvironmentObject var data: PlayerData
var body: some View {
VStack {
HStack {
PlayerView(player: self.data.players[0])
PlayerView(player: self.data.players[1])
PlayerView(player: self.data.players[2])
}
HStack {
PlayerView(player: self.data.players[3])
PlayerView(player: self.data.players[4])
PlayerView(player: self.data.players[5])
}
HStack {
PlayerView(player: self.data.players[6])
PlayerView(player: self.data.players[7])
PlayerView(player: self.data.players[8])
}
HStack {
PlayerView(player: self.data.players[9])
PlayerView(player: self.data.players[10])
}
}
}
}
А вот мой квадратный вид, который будет содержать небольшую сводку для отображения на квадрате:
import SwiftUI
struct PlayerView: View {
@State var scaleFactor: CGFloat = 1.0
var player: Player = Player(name: "Phile", color: .green, age: 42)
var body: some View {
ZStack(alignment: .topLeading) {
Rectangle().frame(width: 100, height: 100).foregroundColor(player.color).cornerRadius(15.0).scaleEffect(self.scaleFactor)
VStack {
Text(player.name)
Text("Age: \(player.age)")
}.padding([.top, .leading], 10)
}.gesture(DragGesture().onChanged { _ in
self.scaleFactor = 1.5
}.onEnded {_ in
self.scaleFactor = 1.0
})
}
}