我想制作一个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 :(得分: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大小,而不是经常更新。这将允许动画时间正确和平滑地执行,而不是严格。
祝你好运。