【问题标题】:make AVPlayer fill the entire screen让 AVPlayer 填满整个屏幕
【发布时间】:2018-01-29 21:06:37
【问题描述】:

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

我所做的是创建一个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

现在视频开始播放了,只是它没有填满整个屏幕。它会填充原始大小,但不会拉伸/缩放。

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

谢谢。

编辑:

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

【问题讨论】:

  • 您能否发布一个屏幕截图以便更好地理解?
  • @andrehungaro 已添加
  • 这段代码放在哪里?尝试在 viewDidLayoutSubviews() 中定义 playerLayer.frame。我猜在您定义帧时,尚未计算视图的最终帧。
  • @andrehungaro 今日英雄!您能否将其作为答案,以便我投票并接受?谢谢!

标签: ios swift avplayer


【解决方案1】:

如果您想在整个视图上拉伸视频,只需删除该行

playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

videoGravity 默认值为AVLayerVideoGravityResize

Swift 5 更新

playerLayer.videoGravity = .resizeAspectFill

【讨论】:

  • 这不会改变任何东西。
  • 看起来您将图层框架设置在不正确的位置。调试它并确保你在设置它时拥有正确的框架。
【解决方案2】:

在 viewDidLayoutSubviews() 中定义 playerLayer.frame

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多