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

6. Haptic 진동

by Toughie 2023. 5. 24.

⭐️Haptic 진동⭐️

아이폰에서 햅틱 효과를 주는 방법에 대해 알아보자.

아이폰6s이후부터 탭틱엔진으로 진동 모듈이 바뀌면서 기분 좋은 진동 효과를 느낄 수 있지만
그 강도가 너무 약해져서 불편한 부분도 있다고 생각한다.

확실하게 빡! 진동을 주기 어려워졌달까.. 그래도 적절하게 사운드와 함께 쓰면 더 나은 UX에 기여할 수 있을 것 같다.

 

싱글톤 패턴을 활용한 햅틱 매니저

//  Created by Toughie on 2023/05/24.
//

import SwiftUI

final class HapticManager {
    static let shared = HapticManager()
    
    private init() { }
    
    //알림
    func notification(type: UINotificationFeedbackGenerator.FeedbackType) {
        let generator = UINotificationFeedbackGenerator()
        generator.notificationOccurred(type)
        
    }
    //효과
    func impact(style: UIImpactFeedbackGenerator.FeedbackStyle) {
        let generator = UIImpactFeedbackGenerator(style: style)
        generator.impactOccurred()
    }
}

 

테스트용 뷰

struct HapticsPrac: View {
    var body: some View {
        VStack(spacing: 30) {
            Text("NOTIFICATIONS")
                .bold()
            HStack(spacing: 15) {
                Button("ERROR") {
                    HapticManager.shared.notification(type: .error)
                }
                Button("SUCCESS") {
                    HapticManager.shared.notification(type: .success)
                }
                Button("WARNING") {
                    HapticManager.shared.notification(type: .warning)
                }
            }

            Divider()
            Text("IMPACTS")
                .bold()
            HStack(spacing: 15) {
                Button("HEAVY") {
                    HapticManager.shared.impact(style: .heavy) }
                Button("LIGHT") {
                    HapticManager.shared.impact(style: .light) }
                Button("MEDIUM") {
                    HapticManager.shared.impact(style: .medium) }
                Button("RIGID") {
                    HapticManager.shared.impact(style: .rigid) }
                Button("SOFT") {
                    HapticManager.shared.impact(style: .soft) }
            }
        }
    }
}

실기기를 통해 햅틱을 확인해보자 :)