A property wrapper type that updates a property while the user performs a gesture and resets the property back to its initial state when the gesture ends.
(사용자가 제스처를 수행하는 동안 속성을 업데이트하고 제스처가 끝날 때 속성을 초기 상태로 재설정하는 속성 래퍼 유형.)
출처 : 애플 개발자 홈페이지(https://developer.apple.com/documentation/swiftui/gesturestate)
Chat GPT에게 물어봤더니, 에러 나는 코드를 반환해서..애플 개발자 페이지에 있는 예시 코드로 실험해 보았다.
import swiftUI
struct SimpleLongPressGestureView: View {
@GestureState private var isDetectingLongPress = false
var longPress: some Gesture {
LongPressGesture(minimumDuration: 3)
.updating($isDetectingLongPress) { currentState, gestureState, transaction in
gestureState = currentState
}
}
var body: some View {
Circle()
.fill(self.isDetectingLongPress ? Color.red : Color.green)
.frame(width: 100, height: 100, alignment: .center)
.gesture(longPress)
}
}
1. @GestureState private var isDetectingLongPress = false
2. .fill(self.isDetectingLongPress ? Color.red : Color.green)
현재 isDetectLongPress의 상태는 false이므로, 초기에 원은 green이다.
LongPressGesture(minimumDuration: 3)
.updating($isDetectingLongPress) { currentState, gestureState, transaction in
gestureState = currentState
}
오래누르기(LongPress)를 하면 3초간은 isDetectLongPress가 true로 바뀌며 green-> red으로 전환된다.
그러다가 3초 지나면 다시 false로 바뀌며 원은 green으로 전환된다.
즉
1. Long Press -> 원이 green(false) -> red(true)
2. 오래 누르고 있어도 3초 지나면 다시 green(false)
'컴퓨터언어 > Swift' 카테고리의 다른 글
[Swift] enumerated() 사용하기 (0) | 2023.09.17 |
---|---|
[SwiftUI] Text의 줄 제한 없애기(linelimit) (0) | 2023.09.17 |
[Swift/SwiftUI] Button Style (버튼 밖을 눌러도 버튼이 눌리는 현상 해결) (0) | 2023.08.09 |
[Swift] CGFloat (0) | 2023.08.09 |
[Swift] Codable (0) | 2023.08.09 |