SwiftHaptics 是一个跨平台的 Swift 包,旨在通过简单而强大的 API 提供高级触觉反馈。
使用 Swift Package Manager 将 https://github.com/jochenbernard/swift-haptics
添加到你的项目中。
使用 haptics
视图修饰符可以轻松地从你的 SwiftUI 视图触发触觉模式。你可以向 haptics
提供一个 Equatable
触发器和一个 HapticPattern
或一个 HapticPatternBuilder
。当提供的触发器值发生变化时,将播放触觉模式。
var body: some View {
someView
.haptics(trigger: trigger) {
TransientHapticEvent(time: 0.0)
ContinuousHapticEvent(
time: 0.5,
duration: 0.5
)
}
}
SwiftHaptics 提供了两种基本的触觉事件,它们是创建触觉模式的构建块:TransientHapticEvent
和 ContinuousHapticEvent
。瞬时事件是短暂的脉冲,而连续事件是任意长度的循环波形。
使用这两种基本的触觉事件,你可以通过遵循 HapticPattern
协议来创建自定义的、更高级的触觉模式。HapticPattern
必须定义一个 pattern
属性,它是一个 HapticPatternBuilder
,以提供其底层模式。这些构建器也支持 if
语句、switch
语句和 for
循环。
struct MyHapticPattern: HapticPattern {
var pattern: HapticPattern {
TransientHapticEvent(time: 0.0)
ContinuousHapticEvent(
time: 0.5,
duration: 0.5
)
}
}
触觉模式也支持修饰符。
scale
允许你缩放触觉模式的强度和清晰度。speed
允许你加速或减慢触觉模式。delay
允许你延迟触觉模式。muted
允许你有条件地静音触觉模式。var body: some View {
someView
.haptics(trigger: trigger) {
MyHapticPattern()
.scale(
intensity: 0.5,
sharpness: 2.0
)
.speed(2.0)
.delay(1.0)
.muted(!playHaptics)
}
}
你还可以通过遵循 HapticPatternModifier
协议来实现自定义的触觉模式修饰符。HapticPatternModifier
必须定义一个 pattern
函数,它是一个 HapticPatternBuilder
,接收原始的 HapticPattern
并返回修改后的 HapticPattern
。
要将 HapticPatternModifier
应用于 HapticPattern
,请使用 modifier
函数。
struct MyHapticPatternModifier: HapticPatternModifier {
func pattern(pattern: HapticPattern) -> HapticPattern {
pattern
.scale(
intensity: 2.0,
sharpness: 2.0
)
.speed(2.0)
}
}
extension HapticPattern {
func myModifier() -> HapticPattern {
modifier(MyHapticPatternModifier())
}
}
接下来,自定义修饰符可以如下使用
MyHapticPattern()
.myModifier()
SwiftHaptics 也可以在 SwiftUI 之外使用,方法是创建一个 HapticEngine
实例并使用其 play
方法。你可以向 play
提供一个 HapticPattern
或一个 HapticPatternBuilder
。
let hapticEngine = HapticEngine()
hapticEngine.play {
TransientHapticEvent(time: 0.0)
ContinuousHapticEvent(
time: 0.5,
duration: 0.5
)
}