添加新项目时动画 CAShapelayer 内容

问题描述

我需要像 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...