簡體   English   中英

以編程方式創建的EZAudioPlot不會繪制

[英]Programmatically created EZAudioPlot does not draw

我正在使用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沒有繪制嗎?

感謝您的見解!!!

對於實時顯示,您需要將此行添加到plot2 var

plot2.shouldOptimizeForRealtimePlot = false;

希望它能對您有所幫助:)

這里是文檔:

@property(非原子,分配)BOOL應該OptimizeForRealtimePlot;

一個BOOL,可以優化音頻繪圖的圖形以進行實時顯示。 由於更新功能可能會非常快速地更新繪圖數據(每秒超過60幀),因此此屬性會將繪圖調用的速度限制為每秒60幀(或任何屏幕速率)。 具體來說,它會禁用WaveformLayer上的隱式路徑更改動畫,並設置顯示鏈接以渲染60 fps(音頻以44.1 kHz的頻率更新繪圖會使其重新渲染86 fps,這遠遠大於視覺顯示所需的速度)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM