LongPressGesture
SwiftUI imo-ishoralar: LongPressGesture
State o‘zgarishlarini ishga tushirish uchun LongPressGesture yordamida uzoq bosib turishni aniqlang.
Sintaksis
Uzoq bosish ishlovchisi: .onLongPressGesture(minimumDuration: 0.5) { ... } yoki .onEnded bilan LongPressGesture(minimumDuration:).
Uzoq bosilganda almashtirish
Yorliqni "Hold me" va "Pressed" o‘rtasida almashtirish uchun 0,5 soniya bosib turing.
Misol
import SwiftUI
struct LongPressDemo: View {
@State private var pressed = false
var body: some View {
Text(pressed ? "Pressed" : "Hold me")
.padding(12)
.background(.blue.opacity(0.1))
.cornerRadius(8)
.onLongPressGesture(minimumDuration: 0.5) { pressed.toggle() }
}
}
import SwiftUI
struct ContentView: View {
var body: some View { LongPressDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Yuqoridagi misolda 0,5 soniya bosib turilganda yorliq "Hold me" va "Pressed" o‘rtasida almashadi.
Uzoq bosish davomida jarayonni ko‘rsatish
LongPressGesture ni .updating bilan birga ishlatib, bosish davom etayotgan holatni kuzating va bosib turilganda view’ni masshtablang.
Misol
import SwiftUI
struct LongPressProgressDemo: View {
@GestureState private var isPressing = false
@State private var done = false
var body: some View {
Circle()
.fill(done ? .green : .gray)
.frame(width: 80, height: 80)
.scaleEffect(isPressing ? 0.9 : 1)
.gesture(
LongPressGesture(minimumDuration: 0.6)
.updating($isPressing) { value, state, _ in state = value }
.onEnded { _ in done.toggle() }
)
}
}
import SwiftUI
struct ContentView: View {
var body: some View { LongPressProgressDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Yuqoridagi misolda doira bosib turilganda kattalashadi va qo‘yib yuborilganda rangini almashtiradi.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
