以编程方式创建的EZAudioPlot不会绘制

时间:2016-02-17 00:50:29

标签: ios swift2 ezaudio

我正在使用EZAudioPlayer播放音频文件。 我希望在EZAudioPlot上绘制声波。

我成功地做到了这一点。 但是,当我以编程方式创建EZAudioPlot时,视图显示但没有绘制声波。

以下是一些代码

var audioPlayer: EZAudioPlayer!
@IBOutlet weak var plot1: EZAudioPlot!
var plot1Flag:Bool = true

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let plotType: EZPlotType = EZPlotType(rawValue: 1)!;
    plot1?.plotType = plotType
    plot1?.shouldFill = true;
    plot1?.shouldMirror = true;


    plot2 = EZAudioPlot()
    plot2.plotType = plotType
    plot2.shouldFill = true;
    plot2.shouldMirror = true;
    plot2.frame = CGRectMake(10, 200, 200, 200)
    plot2.backgroundColor = UIColor.blueColor()
    plot2.color = UIColor.whiteColor()
    self.view.addSubview(plot2)
}

@IBAction func playSound(sender: UIButton) {
    audioPlayer = EZAudioPlayer(URL: NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("Alright", ofType: "wav")!), delegate: self)
    audioPlayer.play()
    plot1Flag = !plot1Flag
}

func audioPlayer(audioPlayer: EZAudioPlayer!, playedAudio buffer: UnsafeMutablePointer<UnsafeMutablePointer<Float>>, withBufferSize bufferSize: UInt32, withNumberOfChannels numberOfChannels: UInt32, inAudioFile audioFile: EZAudioFile!) {
    if(plot1Flag){
        print("plot1")
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.plot1?.updateBuffer(buffer[0], withBufferSize: bufferSize);
        })
    }else{
        print("plot2")
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.plot2.updateBuffer(buffer[0], withBufferSize: bufferSize);
        })
    }

}

你能告诉我为什么人工创建的plot2不会画?

感谢您的见解!!!

1 个答案:

答案 0 :(得分:2)

对于实时显示,您需要将此行添加到plot2 var

plot2.shouldOptimizeForRealtimePlot = false;

希望它可以帮助你:)

以下是文档:

  

@property(nonatomic,assign)BOOL shouldOptimizeForRealtimePlot;

     

BOOL允许实时优化音频图的绘图   显示器。由于更新功能可能正在更新绘图的数据   非常快(每秒超过60帧)这个属性将扼杀   绘图调用为每秒60帧(或任何屏幕   率是)。具体来说,它禁用隐式路径更改动画   waveformLayer并设置一个显示链接以渲染60 fps(音频   以44.1 kHz更新绘图使其重新渲染86 fps - 远   大于视觉显示所需的内容。)