一个 SwiftUI 视图,可以轻松为音乐 App 带来 Tap Tempo 功能。
TapTempoButton
接受一个内容闭包,因此可以进行自定义。整个视图将自动处理 tap 事件并计算平均速度 (以 BPM 为单位),每次更改时都会在 onTempoChange
闭包中发送该速度。
与像标准按钮那样处理触摸事件 (在 touch up 时) 不同,此视图在 touch down 时处理它们,因此按钮行为在音乐环境中更加自然。
将 TapTempoButton
添加到您的 View 中,并使用内容闭包进行自定义。
TapTempoButton(onTempoChange: {
self.tempo = $0
}) {
Text("Tap")
}
它也可以像常规 SwiftUI Button 一样进行自定义
.buttonBorderShape(.capsule)
.buttonStyle(.bordered)
或者
.buttonStyle(MyButtonStyle())
以下属性可以在初始化时配置
tempoRange
:定义可以检测到的最小和最大速度。timeout
:不活动秒数,超过此时间后将重新启动正在进行的检测。minTaps
:在向 onTempoChange
闭包发送值之前所需的最小 tap 次数。roundDecimals
:BPM 四舍五入到的小数位数。设置为 0
表示仅整数 BPM (无小数)。设置为 nil
以禁用舍入。这个库的想法出现在开发 iOS/macOS 应用 Vetro: Visual Metronome 时。如果您喜欢它,可以通过购买我们的任何应用来支持我们。
此库在 MIT 许可证下发布。有关详细信息,请参阅LICENSE。