Ho visto alcuni post su come realizzare questo obiettivo in Objective-C ma non sono stato in grado di fare lo stesso tramite Swift.Avanzamento della riproduzione audio come UISlider in Swift
In particolare, non riesco a capire come implementare addPeriodicTimeObserverForInterval
nel seguente.
var player : AVAudioPlayer! = nil
@IBAction func playAudio(sender: AnyObject) {
playButton.selected = !(playButton.selected)
if playButton.selected {
let fileURL = NSURL(string: toPass)
player = AVAudioPlayer(contentsOfURL: fileURL, error: nil)
player.numberOfLoops = -1 // play indefinitely
player.prepareToPlay()
player.delegate = self
player.play()
startTime.text = "\(player.currentTime)"
endTime.text = NSString(format: "%.1f", player.duration)
} else {
player.stop()
}
Qualsiasi assistenza sarebbe gradita.
Se stai cercando di aggiornare il cursore mentre l'audio progredisce, mi piace usare un link di visualizzazione. CADisplayLink sincronizzerà la frequenza di aggiornamento dello schermo e richiamerà un selettore all'aggiornamento come un NSTimer ottimizzato per la grafica. Sono anche molto semplici da usare e ti impediscono di mettere in coda gli UIUpdate se il timer scatta più velocemente rispetto allo schermo. [Questi sono i documenti.] (Https://developer.apple.com/library/prerelease/ios/documentation/QuartzCore/Reference/CADisplayLink_ClassRef/index.html) È possibile impostare il selettore per visualizzare le chiamate di collegamento per controllare lo stato di avanzamento e aggiorna la posizione del tuo cursore. – Dare
@Dare, grazie per quello. Non avevo idea che esistesse. – allocate