在一些應用中我們會看到第一個展示頁面上放著影片在播放,這次通過 AVPlayertViewController 和 AVPlayer 來做一個。
StartPageMovie
一開始進入畫面的時候會先是一片白,影片慢慢的出現在畫面中。
AVPlayertViewController
通過影片檔案路徑來實例化 AVPlayer 然後實例化 AVPlayerViewController 並設置 player
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
if let path = Bundle.main.path(forResource: "movie", ofType: "mp4") { let movieURL = URL(fileURLWithPath: path) let player = AVPlayer(url: movieURL) player.actionAtItemEnd = .none movieController = AVPlayerViewController() movieController?.player = player movieController?.view.frame = view.bounds movieController?.showsPlaybackControls = false movieController?.videoGravity = AVLayerVideoGravity.resizeAspectFill.rawValue movieController?.player?.play() movieController?.view.alpha = 0 view.addSubview(movieController!.view) UIView.animate(withDuration: 3, animations: { self.movieController?.view.alpha = 1 }) } |
AVLayerVideoGravity
在 AVPlayerViewController 中設置 videoGravity。
和 UIImageView 的 contentMode 一樣,可以設定畫面呈現的規則,看是要完整的顯示在畫面上,還是按照比例充滿畫面等。
- resizeAspect
- resizeAspectFill
- resize
Bundle 讀取 mp4 文件
如果是直接將 mp4 文件放入 xcode 項目中,直接通過 Bundle 引用會找不到。
1 |
let path = Bundle.main.path(forResource: "movie", ofType: "mp4") |
需要到 Build Phases 中引入文件。
Reference
- 在 Github 上有本文相關的 Source Code