How to control the tappable area of a view using contentShape()
SwiftUI/Responding to events 2019. 11. 19. 11:29반응형
Hacking with Swift 사이트의 강좌 번역본입니다.
How to control the tappable area of a view using contentShape()
Text나 Image와 같은 기본 SwiftUI 뷰에 탭 제스쳐를 추가하는 경우에, 뷰는 탭이 가능(tappable)해집니다. VStack 또는 HStack과 같은, 컨테이너 SwiftUI 뷰에 탭 제스쳐를 추가하는 경우에, SwiftUI는 컨테이너의 내부에 있는 일부분만 제스쳐를 추가합니다 - 스택의 큰 부분은 탭이 가능하지 않게(untappable)됩니다.
이게 원하는 것이라면 기본 동작은 좋습니다. 하지만, hit tests의 모양을 변경하고자 하는 경우에(탭에 반응하는 영역) 원하는 모양과 함께 contentShape() modifier를 사용해야 합니다.
예를들어, 다음 코드는 VStack이 이미지, 공백(spacer), 텍스트를 포함하고 이미지와 텍스트 대신에 탭 가능한 전체 스택을 만들기 위해 contentShape() modifier를 사용합니다.
VStack {
Image("enterprise").resizable().frame(width: 50, height: 50)
Spacer().frame(height: 50)
Text("USS Enterprise")
}
.contentShape(Rectangle())
.onTapGesture {
print("Show details for Enterprise")
}
반응형
'SwiftUI > Responding to events' 카테고리의 다른 글
How to disable taps for a view using allowsHitTesting() (0) | 2019.11.19 |
---|---|
How to hide the label of a Picker, Stepper, Toggle, and more using labelsHidden() (0) | 2019.11.19 |
How to respond to view lifecycle events: onAppear and onDisappear (0) | 2019.11.19 |
How to add a gesture recognizer to a view (0) | 2019.11.19 |
How to read tap and double-tap gestures (0) | 2019.11.19 |
How to create a stepper and read values from it (0) | 2019.11.19 |
How to create a segmented control and read values from it (0) | 2019.11.19 |
How to create a date picker and read values from it (0) | 2019.11.19 |