在「iOS 9音頻應用播放音頻之ios9音頻基本功能」一文能夠看到AVAudioPlayer類有不少的屬性以及方法。本節將AVAudioPlayer類中常使用到的屬性和方法進行詳細的講解。ios
在音樂應用程序中都會有一個使音樂中止播放的按鈕。當用戶輕拍該按鈕,正在播放的音樂就會中止。在iOS要想要正在播放的音頻中止下來,可使用AVAudioPlayer類中的pause()方法和stop()方法。swift
1.暫停ide
pause()方法的功能是暫停正在播放的音頻文件,音頻文件仍然準備從暫停處離開恢復播放。其語法形式以下:spa
func pause().net
2.中止code
stop()方法的功能是中止正在播放的音頻文件,並撤消所需的播放設置,即若是恢復播放,音頻文件就須要從新開始播放。其語法形式以下:orm
func stop()教程
注意:stop()方法在Xcode 6.0以後和pause的功能是同樣的,可是幫助文檔中對stop()的簡介仍是之前的。開發
【示例2-1】如下將以第一個實例爲基礎,在播放音頻的基礎上實現暫停音頻播放的功能。代碼以下:文檔
@IBAction func playAudio(sender: AnyObject) {
audioEffect?.play() //播放聲音
playButton.setBackgroundImage(UIImage(named: "pauseImage.png"), forState: UIControlState.Normal)
playButton.addTarget(self, action: ("pauseAudio"), forControlEvents: UIControlEvents.TouchUpInside)
}
func pauseAudio(){
audioEffect?.pause() //暫停
playButton.setBackgroundImage(UIImage(named: "playImage.png"), forState: UIControlState.Normal)
playButton.addTarget(self, action: ("playAudio:"), forControlEvents: UIControlEvents.TouchUpInside)
}
此時運行程序,在出現的模擬器界面中輕拍播放按鈕,此時音頻文件就會播放,而且播放按鈕會變爲暫停按鈕;當開發者輕拍暫停按鈕,播放的音頻文件就會暫停播放,而且暫停按鈕就變爲原來的播放按鈕。
注意:因爲在大多數的音樂播放器中都不會出現中止控件,所在在此示例中也就不進行代碼實現了。
在AVAudioPlayer類中有一個currentTime屬性。該屬性能夠用來對當前播放的音頻文件的時長進行設置的,即對當前播放的音頻文件的播放位置進行設置。該屬性值以秒爲單位的。其語法形式以下:
var currentTime: NSTimeInterval
經過對currentTime屬性的設置,咱們能夠實如今音樂應用中的前進後退功能。
1.前進
前進功能就是讓正在播放的音頻文件前進幾秒進行播放。它的實現就是讓currentTime屬性設置的值進行固定的加法運算。
【示例2-2】如下將以第一個實例爲基礎,實現前進的功能。具體的操做步驟以下:
(1)將主視圖中的Forward Button按鈕與動做forwardAudio進行關聯。
(2)打開ViewController.swift文件,編寫代碼,實現前進功能。代碼以下:
@IBAction func forwardAudio(sender: AnyObject) {
//判斷音頻文件是否正在播放
if(audioEffect!.playing){
//音頻文件正在播放,實現前進
let desiredTime=(self.audioEffect?.currentTime)!+20.0
//判斷設置的時間是否小於音頻文件的總時間
if(desiredTime<self.audioEffect?.duration){
self.audioEffect?.currentTime=desiredTime //設置當前播放的時間
}
}else{
let alertController = UIAlertController(title: "提示", message: "音樂沒有開始播放", preferredStyle: UIAlertControllerStyle.Alert)
let action = UIAlertAction(title: "知道了", style: UIAlertActionStyle.Default, handler: nil)
alertController.addAction(action)
self.presentViewController(alertController, animated: true, completion: nil)
}
}
此時運行程序後,在模擬器界面中輕拍播放按鈕,此時音頻文件就會開始播放,當開發者輕拍前進按鈕後,音頻文件就會快進20秒而後進行播放。(每輕拍一次就會快進20秒的進度)。
注意:若是開發者沒有輕拍播放按鈕,而是直接輕拍前進按鈕,那麼就是彈出「音樂沒有開始播放」的警告視圖,如圖2.25所示。
圖2.25 警告視圖
2.後退
後退功能就是讓正在播放的音頻文件後退幾秒進行播放。它的實現就是讓currentTime屬性設置的值進行固定的減法運算。
【示例2-3】如下將以第一個實例爲基礎,實現後退的功能。具體的操做步驟以下:
(1)將主視圖中的Backward Button按鈕與動做backwardAudio進行關聯。
(2)打開ViewController.swift文件,編寫代碼,實現後退功能。代碼以下:
@IBAction func backwardAudio(sender: AnyObject) {
if(audioEffect!.playing){
//實現後退
let desiredTime=(self.audioEffect?.currentTime)!-20.0
//判斷指定的時間是否爲0
if(desiredTime<0){
self.audioEffect?.currentTime=0.0
}else{
self.audioEffect?.currentTime=desiredTime
}
}else{
let alertController = UIAlertController(title: "提示", message: "音樂沒有開始播放", preferredStyle: UIAlertControllerStyle.Alert)
let action = UIAlertAction(title: "知道了", style: UIAlertActionStyle.Default, handler: nil)
alertController.addAction(action)
self.presentViewController(alertController, animated: true, completion: nil)
}
}
}
此時運行程序後,在模擬器界面中輕拍播放按鈕,此時音頻文件就會開始播放。當開發者輕拍後退按鈕後,音頻文件就會後退20秒而後進行播放。(每輕拍一次就會後退20秒的進度)。
注意:若是開發者沒有輕拍播放按鈕,而是直接輕拍後退按鈕,那麼就是彈出「音樂沒有開始播放」的警告視圖。
本文選自:iOS 9音頻應用開發基礎教程大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!