如何为录制语音制作视觉反弹圈

时间:2017-10-20 16:16:00

标签: ios swift avaudioplayer

我想制作一个UIView,圆圈,根据说话录音的音量进行缩放。我有这个代码来获得率:

recorder.updateMeters()
let ALPHA = 0.05
let peakPower = pow(10, (ALPHA * Double(recorder.peakPower(forChannel: 0))))

我该如何制作这个动画?我只做:

self.audioCircle.transform = CGAffineTransform(scaleX: 1+CGFloat(rate), y: 1+CGFloat(rate))

动画太静态,我需要更自然的弹跳效果,我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:0)

.transform隐含地让您的观看动画更改大小。

在这种情况下,您应该尝试使用:

UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.75, initialSpringVelocity: 0, options: .curveEaseOut, animations: {
    //update view
    self.view.layoutIfNeeded()
    }, completion: { (completed) in
    //animation completed    
})

上面的动画可能是您想要用来为视图设置动画的内容。它提供了很好的反弹效果,您可以使用参数来相应地调整它。

但是,由于输入的性质,我不确定动画的效果如何。

最好经常更新audioCircle大小,而不是经常更新。这将允许动画时间正确和平滑地执行,而不是严格。

祝你好运。