问题描述
我需要像 iOS 语音备忘录应用程序一样渲染移动的音频波形。这里我保持波形:[Int] rms 波幅。
现在,当新的波浪出现时,将其添加到波形 [Int] 中,然后我在 UIBezierPath
的右侧添加新的 CAShapeLayer
行并将整个 CAShapeLayer
平移 5 个点。
但是翻译动画不是那么流畅。你能提出更好的方法吗?
我目前的实现:
override func draw(_ rect: CGRect) {
shiftWaveform()
let path: UIBezierPath!
if let ppath = caLayer.path {
path = UIBezierPath(cgPath: ppath)
} else {
path = UIBezierPath()
}
guard var wave = waveforms.last else { return }
if (Int(wave) <= 2) {
wave = 2
}
count += 1
let startX = Int(self.bounds.width) + 5*count
let startY = Int(self.bounds.origin.y) + Int(self.bounds.height)/2
path.move(to: CGPoint(x: startX,y: startY + min(wave,Int(bounds.height/2))))
path.addLine(to: CGPoint(x: startX,y: startY - min(wave,Int(bounds.height/2))))
caLayer.path = path.cgPath
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)