让 AVPlayer 填满整个屏幕

make AVPlayer fill the entire screen

我有一个应用程序,我希望在单个视图的背景下播放视频。

我所做的是创建一个 AVPlayer,将其添加到 AVPlayerLayer 并将其作为子层添加到我的视图中。

然后我设置框架和 videoGravity 属性:

self.player = AVPlayer(url: URL(fileURLWithPath: path))
let playerLayer = AVPlayerLayer(player: self.player)
self.layer.addSublayer(playerLayer)
playerLayer.frame = self.bounds
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

现在视频开始播放,只是它没有填满整个屏幕。它填充了它的原始大小,但没有 stretch/scale。

我错过了什么吗?为什么我的视频没有调整大小?

谢谢。

编辑:

我添加了一个屏幕截图并将视图设为紫色以便于参考。

如果你想让视频在整个视图上都被拉伸,只需删除该行

playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

videoGravity 默认值为 AVLayerVideoGravityResize

更新 Swift 5

playerLayer.videoGravity = .resizeAspectFill

在viewDidLayoutSubviews()里面定义playerLayer.frame

在您定义帧时,尚未计算视图的最终帧。