[英]Fit video inside of a view
I'm trying to fit a video inside the view I've created on storyboard.我正在尝试将视频放入我在 storyboard 上创建的视图中。
Here is how I added the view to my storyboard.以下是我如何将视图添加到我的 storyboard。
Here is how it shown in simulator.这是它在模拟器中的显示方式。 I want to fit the video inside of the view I've created.我想将视频放入我创建的视图中。
func createVideoView() {
if let url = URL(string: self.videoUrl!) {
let player = AVPlayer(url: url)
let avController = AVPlayerViewController()
avController.player = player
// your desired frame
avController.view.frame = self.videoView.frame
self.view.addSubview(avController.view)
self.addChild(avController)
}
}
Also here is how I create the video.这也是我创建视频的方式。 Notice that videoView variable is the view I want to show the video in.请注意,videoView 变量是我要在其中显示视频的视图。
AVPlayerController
has attribute videoGravity
to set fill video and resizeAspectFill
is the one you need to set fill video on the screen. AVPlayerController
具有属性videoGravity
来设置填充视频,而resizeAspectFill
是您需要在屏幕上设置填充视频的属性。 Notice that when you fill maybe it will not show correctly for all video.请注意,当您填充时,它可能无法正确显示所有视频。
func createVideoView() {
if let url = URL(string: "https://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v") {
let player = AVPlayer(url: url)
let avController = AVPlayerViewController()
avController.player = player
// your desired frame
avController.view.frame = self.videoView.frame
avController.videoGravity = .resizeAspectFill // here
self.view.addSubview(avController.view)
self.addChild(avController)
}
}
Beside, you should make the AVPlayer
as the subview of your videoView
so that you can handle easier than addSubView
to your viewController
.此外,您应该将AVPlayer
作为您的videoView
的子视图,这样您就可以比addSubView
更容易地处理您的viewController
。
func createVideoView() {
if let url = URL(string: "https://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v") {
let player = AVPlayer(url: url)
let avController = AVPlayerViewController()
avController.player = player
// your desired frame
avController.view.frame = self.videoView.bounds // change to bounds
avController.videoGravity = .resizeAspectFill // here
self.videoView.addSubview(avController.view) // add subview to videoView
self.addChild(avController)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.