從UIUX那邊總是會收到各種有趣的需求,這次收到的新需求為希望launch頁面可以停止個幾秒讓指定的背景音樂播完再淡出進入主頁,原本內建的launch頁似乎比較難達成這個要求(假如可以請大神指導我,Thx),於是我查找了一些資訊,決定不用內建的launch頁,直接建個新的viewcontroller來達成,背景音樂的部分.caf或.mp3都可以播放,這邊是放進專案裡,再來就是畫面動畫的部分可以限制需要幾秒的動畫,以搭配音樂共進退,來完成這個需求
首先,因為需要播放音樂須先引用多媒體庫import AVFoundation
然後因為是偽launch頁,所以在viewDidLoad的地方就要先設定好音樂,要在此檢查網路狀態也是可以的
先建立播放器的實體 let player = AVPlayer()
然後抓取放在專案裡的音樂檔
override func viewDidLoad() {
super.viewDidLoad()
let fileUrl = Bundle.main.url(forResource: "launch", withExtension: "mp3")!
let playerItem = AVPlayerItem(url: fileUrl)
player.replaceCurrentItem(with: playerItem)
}
等到viewDidAppear時要同時出現畫面與音樂
確認一下背景音樂的秒數決定動畫要運行的時間
因為要淡出畫面所以設定了self.view.alpha = 0
淡出後的處理是全螢幕跳轉進另一個頁面
期間伴隨著背景音樂的播放
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.animate(withDuration: 3, delay: 3, options: .curveEaseInOut, animations: {
self.view.alpha = 0
}) { (finished) in
let storyBoard = UIStoryboard.init(name: "Main", bundle: nil)
if let vc = storyBoard.instantiateViewController(withIdentifier: "MainView") as? MainViewController {
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: true, completion: nil)
}
}
self.player.play()
}