让 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
在您定义帧时,尚未计算视图的最终帧。
我有一个应用程序,我希望在单个视图的背景下播放视频。
我所做的是创建一个 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
在您定义帧时,尚未计算视图的最终帧。