目的:
2. 利用 AVPlayer 播放音樂。
3. 包含播放鍵,暫停鍵,下一首,上一首。
4. 使用 IBOutlet 和 IBAction 實現 App 的功能。
5. 畫面上至少需包含以下元件,而且程式也有使用這些元件。
text field,slider,switch,label,image view,button,segmented control。
6. slider 滑動時要搭配 label 顯示數值。
7. 有亂數功能。
這次這個APP花了三天左右才理解需要用到的功能,而學到的東西真的滿多的,就講一下吧~
lazy是可以幫助我們在建立一些變數時,若變數的建立需要花一些時間,就可以加上它,當需要時,程式才會建立此變數,通常遇到下面的問題時可以用到。
2. observer的function使用:
當我們是希望在APP執行的過程中,讓程式可以根據使用過程中的變化而去做出改變就能用這個function去設定。這次用到的是在週期時間內去觀察然後做變化的function。
比較需要注意的是
forInterval:在多少時間範圍內觀察一次。
using: 當所設定的變化目標發生時,執行的程式內容。
3. AVPlayer的相關內容:
let player = AVPlayer() :創造ㄧ個管理播放媒體的實例。
let SOSurl = Bundle.main.url(forResource: “Avicii — SOS (Fan Memories Video) ft. Aloe Blacc”, withExtension: “mp4”)!:將要播放的音樂放進磁碟中目錄的形式。
lazy var playItem = AVPlayerItem(url: SOSurl):使我們的檔案轉換成AVPlayer可播放的形式。
player.replaceCurrentItem(with: tracks[0]):替換目前正在播放的音樂。
player.seek(to: time):利用 CMTime 控制歌曲播放的區段,讓time去決定要從什麼時候開始播放。
player.play():播放音樂。
參考文件:
4. IBAction的使用:可以設想成,當使用者點擊按鈕時,會執行以下動作。
5. 背景播放音樂:
從+Capability加入background Modes。
心得: 這次做到後來,發現應該有很多建立的變數,是可以整理分析在一起,用array或者class的方式去分類,讓程式可以更簡潔有效率,這部分之後還會多做琢磨。
Github:
https://github.com/deblive0917/music-player
參考文章: