[英]ViewController created programmatically does not look like on Storyboard
[英]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.