[UIKit] Spotify Clone: Haptics

Junyoung Park·2022년 9월 11일
0

UIKit

목록 보기
26/142
post-thumbnail

Building Spotify App in Swift 5 & UIKit - Part 26 - Haptics (Xcode 12, 2021, Swift 5) - Build App

Spotify Clone: Haptics

구현 목표

  • 햅틱 (진동 등) 구현

구현 태스크

  1. 햅틱 매니저 클래스 - 싱글턴 패턴 구현
  2. 특정 이벤트 성공/실패를 햅틱 이벤트로 전달하기

핵심 코드

import Foundation
import UIKit

final class HapticManager {
    static let shared = HapticManager()
    private init() {}
    public func vibrateForSelection() {
        DispatchQueue.main.async {
            let generator = UISelectionFeedbackGenerator()
            generator.prepare()
            generator.selectionChanged()
            print("vibrate for selection")
        }
    }
    
    public func vibrate(for type: UINotificationFeedbackGenerator.FeedbackType) {
        DispatchQueue.main.async {
            let generator = UINotificationFeedbackGenerator()
            generator.prepare()
            generator.notificationOccurred(type)
            print("vibrate")
        }
    }
}
  • 선택을 했을 때의 피드백을 제공하는 vibrateForSelection 함수
  • 성공, 에러, 경고 등 다양한 의도를 담고 있는 vibrate. 타입 파라미터를 통해 사용 가능
    @objc private func didTapActions() {
        ...
            // Save album
            APICaller.shared.saveAlbum(album: self.album) { success in
                if success {
                    HapticManager.shared.vibrate(for: .success)
                    NotificationCenter.default.post(name: .albumSavedNotification, object: nil)
                    print("Saved: \(success)")
                } else {
                    HapticManager.shared.vibrate(for: .error)
                }
            }
        }))
       ...
    }
profile
JUST DO IT

0개의 댓글