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