简体   繁体   English

使视频适合视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM