[英]Set size for Video with AVPlayerViewController
我需要在游戏结束时播放一段短视频。
我在我的情节提要上创建了一个 AVPlayerViewController,并使用来自前一个视图控制器的 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*70 像素)。 我相信默认大小在某个时候是 100*100,它会缩放它以匹配我的视频比例。
如果我不指定边界,它会缩放到整个屏幕(视频重力不让我选择)。
如果我在 viewDidLayoutSubviews 中减小整个视图的大小,仍然不行,因为这个方法被多次调用,所以我一直在改变我的视图边界。
我无法相信使用 AVPlayerViewController 在屏幕的一部分上显示本地视频是多么困难......
有什么帮助吗?
您可以将视图控制器设置为您想要的任何大小。 像这样,如果你想:
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 的答案,除非在全屏模式下。 对我来说似乎工作正常。
AVPlayerViewController 仅意味着以全屏方式使用,您最好使用AVPlayerLayer
这允许您将其大小/放置在您选择的视图中。
let player = AVPlayer(url: myURL)
let layer = AVPlayerLayer(player: player)
layer.frame.size = CGSize(100,100)
layer.frame.origin = myView.center
player.play()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.