SoundWave是一个可定制的视图,表示随时间变化的音频。
功能
- 实时添加和显示音频电平测量值
- 设置已存在的音频电平测量数组并播放/暂停/继续
- 自定义背景、渐变起始和结束颜色、电平条属性等。
需求
- iOS 10.0+
- Xcode 10.0+
- Swift 4.2+
安装
CocoaPods
CocoaPods是一个Cocoa项目依赖管理器。
要使用CocoaPods将SoundWave集成到Xcode项目中,请在您的Podfile
中指定它:
pod "SoundWave"
运行 $ pod install
将框架添加到您的 Xcode 项目中。
Carthage
Carthage 是一种去中心化的依赖管理器,它可以构建您的依赖并提供二进制框架。
要使用 Carthage 将 SoundWave 添加到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "bastienFalcou/SoundWave"
运行 $ carthage update
构建框架,并将构建好的 SoundWave.framework
拖入您的 Xcode 项目中。
用法
查看示例应用以获取示例。它包含以下示例:实时录制声音并显示电平测量,之后播放声音,调整视图大小,更改颜色以及许多其他属性。
添加视图
AudioVisualizationView
可以添加到故事板或使用程序方式实例化
let audioVisualizationView = AudioVisualizationView(frame: CGRect(x: 0.0, y: 0.0, width: 300.0, height: 500.0)))
view.addSubview(audioVisualizationView)
自定义 UI
电平测量条
AudioVisualizationView
继承自 UIView
,因此您可以更改所有继承的属性(例如 backgroundColor
)。
您可以为图形更改宽度、圆角半径和条与条之间的空间。这将强制图形重绘。
self.audioVisualizationView.meteringLevelBarWidth = 5.0
self.audioVisualizationView.meteringLevelBarInterItem = 1.0
self.audioVisualizationView.meteringLevelBarCornerRadius = 0.0
您还可以更改渐变的起始和结束颜色。
self.audioVisualizationView.gradientStartColor = .white
self.audioVisualizationView.gradientEndColor = .black
这些定义为
IBInspectable
的变量也可以在 Interface Builder 中设置。
实时显示声音电平
一个声音电平代表声音样本的功率分贝。首先确保你处于 写入
模式
self.audioVisualizationView.audioVisualizationMode = .write
你表示电平的图表将在每次你通过调用以下操作实时通过新的值时(重新)绘制。该值需要是 介于 0 和 1 之间。
self.audioVisualizationView.add(meteringLevel: 0.6)
你需要根据你的录音系统的 最小 和 最大分贝数值 计算 百分比。如果一个值超过 1,则电平条不会完全显示在视图的范围内。
如果你需要重置你的图表,只需调用以下内容
self.audioVisualizationView.reset()
播放现有的电平参数数组
AudioVisualizationView
可以接受一个电平参数的数组来播放。这些值都收集在它的 meteringLevelsArray
属性中,也就是一个介于 0 和 1 之间的浮点值数组。如果值不足以填充屏幕或者值太多,这些值将分别被 外推 或 集中 以便很好地覆盖整个屏幕宽度。
self.audioVisualizationView.audioVisualizationMode = .read
self.audioVisualizationView.meteringLevels = [0.1, 0.67, 0.13, 0.78, 0.31]
self.audioVisualizationView.play(for: 5.0)
指定你的声音的持续时间,以便视图可以以相同的速度播放(并且你的电平与用户听到的声音强度相匹配)。
注意:你可以通过调用来暂停/继续/停止这个过程。
self.audioVisualizationView.pause()
self.audioVisualizationView.play(for: durationLeft)
self.audioVisualizationView.stop()
如前所述,你可以在任何点调用 reset()
来重置视图。
许可
SoundWave 适用于 MIT 许可。参见 LICENSE 文件以获取更多信息。