您可以使用SiriWaveView。从 github 下载。
然后你可以制作它的实例,
siriWaveView = [[SCSiriWaveformView alloc]initWithFrame:CGRectMake(20, (self.view.frame.size.height/2) - 160 + 120, self.view.frame.size.width - 40, 80)]; //you can set your desired frame
siriWaveView.backgroundColor = appGrayColor;
然后你可以设置属性,如,
[siriWaveView setWaveColor:myColor]; //desired color
[siriWaveView setPrimaryWaveLineWidth:3.0f];
[siriWaveView setSecondaryWaveLineWidth:1.0];
实现这个方法,
- (void)updateMeters
{
if (audioPlayer.playing) {
CGFloat normalizedValue;
[audioPlayer updateMeters];
normalizedValue = [self _normalizedPowerLevelFromDecibels:[audioPlayer averagePowerForChannel:0]];
[siriWaveView updateWithLevel:normalizedValue];
// NSLog(@"Update meter called");
}
}
- (CGFloat)_normalizedPowerLevelFromDecibels:(CGFloat)decibels
{
if (decibels < -60.0f || decibels == 0.0f) {
return 0.0f;
}
return powf((powf(10.0f, 0.05f * decibels) - powf(10.0f, 0.05f * -60.0f)) * (1.0f / (1.0f - powf(10.0f, 0.05f * -60.0f))), 1.0f / 2.0f);
}
播放音频或音乐之类的通话时,
displaylink = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateMeters)];
[displaylink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
您可以参考该链接中的演示项目以获得更好的理解。
希望这会有所帮助:)