iOS8 用AVAudioPlayer播放音乐(Swift)
AVAudioPlayer?類提供了播放音頻文件的功能,在本次教程中,我們將對(duì)一個(gè)音樂文件進(jìn)行播放暫停和停止操作,此外還會(huì)顯示標(biāo)題和播放時(shí)間。本次教程使用iOS8和Xcod6.3.1
打開Xcode創(chuàng)建一個(gè)新的?Single View Application?,使用IOS8SwiftPlayMusicAVAudioPlayerTutorial?作為?product name?,并填寫組織名稱和標(biāo)識(shí)符。選擇?Swift?語言并確保設(shè)備選擇iPhone。
在這個(gè)工程中我們需要開始暫停和停止按鈕的圖片和一個(gè)mp3文件。你可以在這里下載?。解壓文件并把它們添加到工程,確保是拷貝他們到目標(biāo)文件夾。
轉(zhuǎn)到故事板拖兩個(gè)標(biāo)簽和兩個(gè)按鈕到主視圖。依次選擇他們并在?Size Inspector?填入下列值。
- 上面的標(biāo)簽 -> X: 16, Y: 60, Width: 568, Height:17
- 中間的標(biāo)簽 -> X: 250, Y: 120, Width: 100, Height: 36
- 左邊的按鈕 -> X: 16, Y: 220, Width: 102, Height: 102
- 右邊的按鈕 -> X:484, Y: 220, Width: 102, Height: 102
再依次選擇他們?cè)?Attributes Inspector?添加以下值。
- 上面的標(biāo)簽: Center Alignment, Font – System 14.0
- 中間的標(biāo)簽: Center Alignment. Font – System Bold 30.0
- 左邊的按鈕: Type -Custom, Image – playpause.png
- 右邊的按鈕: Type – Custom, Image – stop.p
按下?Resolve Auto Layout?按鈕在故事板的右下角,選擇?Reset to Suggested Constraints
現(xiàn)在故事板看起來是這樣的
選擇助理窗口并確保?ViewController.swift?可見。
按住?Ctrl?拖動(dòng)頂部的標(biāo)簽創(chuàng)建下列的插口。
按住?Ctrl?拖動(dòng)中間的標(biāo)簽創(chuàng)建下列的插口。
按住?Ctrl?拖動(dòng)播放暫停圖片創(chuàng)建下列動(dòng)作。
按住?Ctrl?拖動(dòng)播放停止圖片創(chuàng)建下列動(dòng)作。
在?ViewController.swift?文件中導(dǎo)入?AVFoundation?框架。
import AVFoundation添加下列屬性在?ViewController?類中
var audioPlayer = AVAudioPlayer() var isPlaying = false var timer:NSTimer!AVAudioPlayer?類可以讓你播放任何iOS支持的音頻格式。使用?isPlaying?布爾值來表示當(dāng)前是否正在播放音樂。?NSTimer?屬性用來顯示當(dāng)前播放音樂的時(shí)間。
修改?viewDidLoad?方法
override func viewDidLoad() {super.viewDidLoad()trackTitle.text = "Future Islands - Tin Man"var path = NSBundle.mainBundle().URLForResource("Future Islands - Tin Man", withExtension: "mp3")var error:NSError? audioPlayer = AVAudioPlayer(contentsOfURL: path!, error: &error) }將標(biāo)題賦值給標(biāo)題的標(biāo)簽,然后用音樂文件初始化?AVAudioplayer?,接著實(shí)現(xiàn)playOrPauseMusic?方法。
@IBAction func playOrPauseMusic(sender: AnyObject) {if isPlaying {audioPlayer.pause()isPlaying = false } else { audioPlayer.play() isPlaying = true timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "updateTime", userInfo: nil, repeats: true) } }首先我們判斷是否正在播放,如果是,那么暫停音樂并改變?isPlaying?的值,如果沒有播放,我們播放它并改變?isPlaying?的值。然后創(chuàng)建一個(gè)?NSTimer?對(duì)象用來每秒調(diào)用?updateTime?方法,我們來實(shí)現(xiàn)它。
func updateTime() {var currentTime = Int(audioPlayer.currentTime)var minutes = currentTime/60var seconds = currentTime - minutes * 60playedTime.text = NSString(format: "%02d:%02d", minutes,seconds) as String }播放器的?currentTime?屬性將被分割成分和秒兩部分用來顯示播放的時(shí)間。最后實(shí)現(xiàn)?stopSound?方法。
@IBAction func stopMusic(sender: AnyObject) {audioPlayer.stop()audioPlayer.currentTime = 0isPlaying = false }播放器調(diào)用停止方法并重置當(dāng)前播放時(shí)間。當(dāng)下次按下播放時(shí),將會(huì)從頭開始播放。?isPlaying?屬性將被賦值為false,構(gòu)建并運(yùn)行程序,按下播放/暫停按鈕和停止按鈕來控制音樂。
你可以下載?IOS8SwiftPlayMusicAVAudioPlayerTutorial?的源代碼在GitHub?的倉庫上。
轉(zhuǎn)載于:https://www.cnblogs.com/Free-Thinker/p/5044786.html
總結(jié)
以上是生活随笔為你收集整理的iOS8 用AVAudioPlayer播放音乐(Swift)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是REST?以及RESTful的实现
- 下一篇: opencore