⭐️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) }
}
}
}
}
실기기를 통해 햅틱을 확인해보자 :)
'SwiftUI > SwiftUI(Intermediate)' 카테고리의 다른 글
8. MagnificationGesture (확대/축소) (0) | 2023.05.25 |
---|---|
7. 푸쉬 알림 (Notification) (0) | 2023.05.24 |
5. AVAudioPlayer 사운드 재생/ 열거형 (원시값,연관값) (0) | 2023.05.23 |
4. typealias 타입앨리어스 (0) | 2023.05.22 |
3. CoreData Relationship/ 관계형 데이터 모델 (0) | 2023.05.22 |