Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
SwiftUI/SwiftUI(Basic)

48. [SwiftUI] .onTapGesture() 탭 제스쳐

by Toughie 2023. 5. 2.

말 그대로 탭(터치) 했을 때 원하는 동작을 할 수 있게 할 수 있는 탭 제스쳐에 대해 알아보자. (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)
    }
}