はじめに
昨日、@GestureState
についての記事を書きました
今回はそれの応用で実用的なものを作ってみます
サンプルアプリ
実装
import SwiftUI
struct ContentView: View {
@GestureState private var location: CGPoint?
var body: some View {
VStack {
if let location {
Circle()
.frame(width: 50, height: 50)
.position(location)
.foregroundStyle(.cyan)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(.red)
.gesture(dragGesture)
}
var dragGesture: some Gesture {
DragGesture(minimumDistance: 0, coordinateSpace: .local)
.updating($location) { value, location, transaction in
location = value.location
}
}
}
おわり
@GestureState
を使うと自動でnilになるので指を離したことを検知することが簡単に行えます。