말 그대로 탭(터치) 했을 때 원하는 동작을 할 수 있게 할 수 있는 탭 제스쳐에 대해 알아보자. (VS 버튼)
기본적인 동작은 비슷해서 선택 가능한데, 코드 가독성은 탭제스쳐를 사용하는 것이 더 좋다고 생각한다.
기본적으로
버튼은 누르면 눌렸다는 것을 알 수 있게 색상이 변하는 것을 알 수 있음.
but 탭제스쳐는 따로 색상이 변하는(하이라이트)효과는 없음.
마지막 하트는 2번 탭하면 동작함. (탭 횟수를 간편하게 지정할 수 있음)
// Created by Toughie on 2023/05/02.
//
import SwiftUI
struct TapGesturePrac: View {
@State var isSelected: Bool = false
var body: some View {
VStack(spacing: 40) {
RoundedRectangle(cornerRadius: 25)
.frame(height: 200)
.foregroundColor(isSelected ? .green : .gray)
Button {
isSelected.toggle()
} label: {
Text("Button")
.font(.headline)
.foregroundColor(.white)
.frame(height: 55)
.frame(maxWidth: .infinity)
.background(Color.cyan)
.cornerRadius(25)
}
Text("Tap")
.font(.headline)
.foregroundColor(.white)
.frame(height: 55)
.frame(maxWidth: .infinity)
.background(Color.green.opacity(0.9))
.cornerRadius(25)
//탭 제스쳐
.onTapGesture {
isSelected.toggle()
}
Image(systemName: "heart.fill")
.resizable()
.foregroundColor(Color.pink)
.frame(width: 70, height: 70)
.scaledToFit()
//탭 제스쳐 카운트
.onTapGesture(count: 2) {
isSelected.toggle()
}
}
.padding(50)
}
}
'SwiftUI > SwiftUI(Basic)' 카테고리의 다른 글
[50] @Publisehd, @StateObject, @ObservedObject / MVVM (0) | 2023.05.07 |
---|---|
[49] custom Model 커스텀 모델/ Identifiable (0) | 2023.05.03 |
47. [SwiftUI] Optional Unwrapping( if let / guard let ) (0) | 2023.05.02 |
46. [SwiftUI] .onAppear/disappear & DispatchQueue, 동시성 프로그래밍/ 비동기적 실행 (0) | 2023.05.02 |
43. [SwiftUI] 마크업, 문서화 (코드 정리) (0) | 2023.05.02 |