利用 storyboard 的 AVPlayerViewController 搭配 IBSegueAction 播影片
透過 iOS SDK 提供的 AVPlayerViewController 我們可以輕鬆地播放影片。使用 AVPlayerViewController 時,通常我們都從程式產生,因為我們無法直接在 storyboard 控制它播放的影片。
不過透過 IBSegueAction,我們現在也能從 storyboard 拉 segue 到 AVPlayerViewController,指定它播放的影片了。接下來就讓我們以告五人好聽的愛在夏天親手實驗看看吧。
在 project navigator 加入愛在夏天的影片檔
從 storyboard 設計畫面
加入 AVPlayerViewController (AVKit Player View Controller)。
從 button 愛在夏天連到 AVPlayerViewController。
產生 IBSegueAction function
從 segue 連線到 segue 起點的 controller ViewController,產生 IBSegueAction function。
輸入 function 名稱 showVideo。
加入 AVKit framework
AVPlayerViewController 來自 AVKit,因此我們必須在 ViewController import AVKit。
import AVKit
設定 player 播放的影片
當我們從 segue 切換到 AVPlayerViewController 時,我們可以從 IBSegueAction function 產生 AVPlayerViewController,然後將資料傳給 AVPlayerViewController。因此我們透過以下程式設定 AVPlayerViewController 的 player 播放影片愛在夏天。
@IBSegueAction func showVideo(_ coder: NSCoder) -> AVPlayerViewController? {
let controller = AVPlayerViewController(coder: coder)
let url = Bundle.main.url(forResource: "愛在夏天", withExtension: "mp4")
controller?.player = AVPlayer(url: url!)
controller?.player?.play()
return controller
}
結果