[iOS/Swift] Haptic feedback, Haptic effect, 진동 효과

bibi·2022년 10월 28일
0

iOS

목록 보기
3/3
post-thumbnail

iOS App에서 진동 효과를 주는 방법을 정리해보았다.


공식 문서를 참고하면, Apple은 진동 효과를 Haptic Feedback이라고 부른다.

사용자에게 haptic을 통해 feedback을 제공하는 것이기 때문일 것이다.

UIKit에 포함되어있고, UIFeedbackGenerator라는 추상 클래스를 상속 받은 3개의 클래스가 있다.

  • Impact
  • Notification
  • Selection

UIImpactFeedbackGenerator

FeedbackStyle을 지정하여 UIImpactFeedbackGenerator의 인스턴스를 생성하고, .impactOccurred()를 사용하면 된다.

FeedbackStyle은 아래와 같이 5가지 종류가 있다.

soft는 light와 비슷한 강도인데, 더 길게 늘어진 진동이다.
rigid는 light보다 살짝 강한 정도이고, 짧게 떨어지는 진동이다.


UINotificationFeedbackGenerator

FeedbackType을 지정하여 UINotificationFeedbackGenerator의 인스턴스를 생성하고, .notificationOccurred()를 사용하면 된다.

FeedbackType은 아래와 같이 3가지가 있다.


UISelectionFeedbackGenerator

UISelectionFeedbackGenerator의 인스턴스를 생성하고, .selectionChanged()를 사용하면 된다.


구현

import Foundation
import UIKit

class HapticManager {
    static let shared = HapticManager()
    
    // warning, error, success
    func hapticNotification(type: UINotificationFeedbackGenerator.FeedbackType) {
        let generator = UINotificationFeedbackGenerator()
        generator.notificationOccurred(type)
    }
    
    // heavy, light, meduium, rigid, soft
    func hapticImpact(style: UIImpactFeedbackGenerator.FeedbackStyle) {
        let generator = UIImpactFeedbackGenerator(style: style)
        generator.impactOccurred()
    }
}

이렇게 정의하고, SwiftUI로 구현된 뷰의 필요한 부분(예를 들면 버튼)에서 shared 인스턴스로 함수를 호출하는 방식으로 구현하였다.

profile
Spread positive vibe and love 🫶

0개의 댓글