2017-10-20 147 views
0

我想制作一个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)) 

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

谢谢!

回答

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大小,而不是不断地更新。这将允许动画时间正确和平滑地执行,而不是严格地执行。

祝你好运。