使用 AVKit for Swift 设置 AVLayerVideoGravity 时遇到问题

Posted

技术标签:

【中文标题】使用 AVKit for Swift 设置 AVLayerVideoGravity 时遇到问题【英文标题】:Trouble setting AVLayerVideoGravity with the AVKit for Swift 【发布时间】:2020-02-22 01:43:11 【问题描述】:

我对 Swift 和 Xcode 非常陌生,我试图使用视频作为从一个场景到另一个场景的过渡。我已经弄清楚了大部分代码,但是视频的大小与屏幕的大小不匹配,这意味着当发生过渡时,背景会改变大小。我可以通过更改 AVLayerVideoGravity 来解决这个问题,但是文档中的命令给了我错误,我还没有找到正确设置它们的方法。我确信这真的很简单,我只是在任何地方都找不到我需要的语法,尤其是在最新版本的 swift 和 Xcode 中,所以我想我会问。这是我的代码。

import UIKit
import AVKit

class MainRoom: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
    
    @IBAction func Backpack(_ sender: Any) 
        if let path = Bundle.main.path(forResource: "OpenBackpack", ofType: "avi", inDirectory: "SegueAnimations")
        
            let OpenBackpack = AVPlayer(url: URL(fileURLWithPath: path))
            let animPlayer = AVPlayerViewController()

            animPlayer.player = OpenBackpack
            animPlayer.showsPlaybackControls = true
            let avPlayerLayer = AVPlayerLayer(player: OpenBackpack)

            //Set avlayervideogravity to resizeaspectfill

            present(animPlayer, animated: true, completion:
        
                OpenBackpack.play()
        )
        
    


感谢您的帮助!

【问题讨论】:

如果有人知道如何在视频结束时调用动作,我也很难找到最新的 swift 版本,谢谢! 【参考方案1】:

找到了!我误解了另一篇文章中的代码,这很好用

animPlayer.videoGravity = AVLayerVideoGravity.resizeAspectFill

【讨论】:

以上是关于使用 AVKit for Swift 设置 AVLayerVideoGravity 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift AVPlayerViewController 添加 AirPlay

iOS使用画中画展示后台歌词

Swift:“数据”类型的值错误以键入“数据”

使用 avkit 流式传输视频时出现黑屏

无法使用带有 Swift 的 AVPlayer 播放视频

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”