Ios 使用AVPlayerViewController设置视频大小

Ios 使用AVPlayerViewController设置视频大小,ios,swift,avplayerviewcontroller,Ios,Swift,Avplayerviewcontroller,我需要在游戏结束时播放一段短片 我在我的故事板上创建了一个avplayervewcontroller,使用上一个视图控制器的segue创建了一个模态表示 但是我希望视频不要覆盖整个屏幕。假设屏幕大小的50%(居中) 以下是我尝试的代码: import AVKit import AVFoundation import UIKit class VideoPlayerViewController: AVPlayerViewController { override func viewDidLoad

我需要在游戏结束时播放一段短片

我在我的故事板上创建了一个avplayervewcontroller,使用上一个视图控制器的segue创建了一个模态表示

但是我希望视频不要覆盖整个屏幕。假设屏幕大小的50%(居中)

以下是我尝试的代码:

import AVKit
import AVFoundation
import UIKit

class VideoPlayerViewController: AVPlayerViewController {

override func viewDidLoad() {
    super.viewDidLoad()
}

override func viewDidAppear(animated: Bool) {
    // Play video
    player?.play()
}

override func viewDidLayoutSubviews() {
    print(videoBounds)
    self.view.bounds = videoBounds
}
}

问题是整个屏幕的视频比例非常小(大约100*70px)。我相信默认大小在某个点是100*100,它会根据我的视频比例进行缩放

如果我不指定边界,它将扩展到整个屏幕(视频重力不让我选择)

如果我在viewDidLayoutSubviews中减小整个视图的大小,仍然不行,因为这个方法被调用了多次,所以我一直在更改视图边界

我不敢相信用AVPlayServiceWController在屏幕上显示本地视频有多困难


有什么帮助吗?

AVPlayerLayer只能全屏使用,最好使用
AVPlayerLayer
这允许您根据自己的选择调整/放置它的大小

let player = AVPlayer(url: myURL)
let layer = AVPlayerLayer(player: player)
layer.frame.size = CGSize(100,100)
layer.frame.origin = myView.center

player.play()

您可以将视图控制器设置为任意大小。像这样,如果你想:

let videoURL = URL(fileURLWithPath: videoPath)
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.view.frame = CGRect (x:100, y:100, width:200, height:100)
playerViewController.player = player  

self.addChildViewController(playerViewController)
self.view.addSubview(playerViewController.view)
playerViewController.didMove(toParentViewController: self)
(显然,上面的尺寸会很奇怪,但是你可以。如果你想的话)

如果希望自动管理播放器控件,请使用ViewController。如果您想滚动自己的控件,层可能更好


只需发布此消息以更正指示您不应使用VC的答案,除非是在全屏情况下。对我来说似乎很好。

我没有看到任何苹果文档表明这种情况-如果有,请添加文档链接。有什么解决方案吗?@Khush否定