利用 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
}

結果

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com