在AVPlayerViewController中使AVPlayer全屏显示,Swift

10

我是新手,正在学习Swift,在使用AVPlayerViewController时遇到了问题,无法让AVPlayerViewController.player在ViewController中全屏播放。

这里是我在viewDidAppear中使用的代码来播放视频:

    let path = NSBundle.mainBundle().pathForResource("video", ofType: "mp4")!
    let url = NSURL(fileURLWithPath: path)

    let player = AVPlayer(URL: url)
    self.player = player
    self.showsPlaybackControls = false
    self.player!.play()

我正在隐藏playBackControlls,并需要将视频视图全屏显示...
2个回答

15

为了将AVPlayer添加到视图中,我可以通过以下方式创建CALayer:

let playerLayer = AVPlayerLayer(player: player)

然后你需要将这个layer添加到一个视图上,例如,如果你在ViewController中编写了这段代码,你可以这样做:

self.view.layer.addSublayer(playerLayer)

接下来,请确保这个layer的大小与其父ViewController一样大:

playerLayer.frame = self.view.layer.bounds

现在,你可以选择任何一种这些选项来调整你的视频大小。在这里,我使用了 .resize 来假定视频和屏幕的纵横比相同。

playerLayer.videoGravity = AVLayerVideoGravity.resize


@(Hamoon Jamshidi Meydandar) 你尝试过使用AVPlayerLayer实现全屏播放控制吗? - Sulman Malik

7
我建议您在不添加额外层级的情况下采用以下解决方案:
在您的ViewController: AVPlayerViewController中,在viewDidLoad()中设置。
videoGravity = .resizeAspectFill

根据文档:
视频重力决定了视频内容如何在播放器视图控制器的视图范围内缩放或拉伸。 播放器视图控制器支持以下视频重力值:
- resizeAspect - resizeAspectFill - resize 默认值为resizeAspect。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接