ios - Swift AV Player 视频应该是 AspectFill 或全屏

标签 ios iphone swift avplayer avplayerviewcontroller

在登录屏幕上,我必须以全分辨率显示背景视频。我可以通过在黑色区域双击下面的图像来做到这一点。

enter image description here

这是我要求的结果。但这不是通过编码完成的。我只是通过双击黑色区域来做到这一点。 enter image description here

这是我为这门课编写的代码。

class loginViewController: UIViewController {
@IBOutlet weak var videoView: UIView!
let player = AVPlayer()

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.isNavigationBarHidden = true
    let myFileManager = FileManager.default
    let mainBundle = Bundle.main
    let resourcesPath = mainBundle.resourcePath!
    guard let allItemsInTheBundle = try? myFileManager.contentsOfDirectory(atPath: resourcesPath) else {
        return
        }

    let videoName = "login_video"
    let videoPath = Bundle.main.path(forResource: videoName, ofType: "mp4")
    let videoUrl = URL(fileURLWithPath: videoPath!)

        let player = AVPlayer(url: videoUrl)
        let controller=AVPlayerViewController()
        controller.player=player

        let playerLayer = AVPlayerLayer(player: self.player)        
        playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;

        controller.showsPlaybackControls = false
        controller.view.frame = self.view.frame
        videoView.addSubview(controller.view)
        self.addChildViewController(controller)
        player.play()
        player.actionAtItemEnd = .none
        loopVideo(player: player)
}
func loopVideo(player: AVPlayer) {
    NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil, queue: nil) { notification in
        player.seek(to: kCMTimeZero)
        player.play()
    }
}   
}

谁能建议我怎样才能达到这个要求的结果。我找到了这个解决方案,但很顺利。

     let playerLayer = AVPlayerLayer(player: self.player)        
     playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;

请建议我更好的方法。 提前致谢。

最佳答案

此代码什么都不做:

    let playerLayer = AVPlayerLayer(player: self.player)        
    playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill;

所做的只是创建一个新的播放器层并将其丢弃。

AVPlayerViewController 已经有播放器层了!设置 AVPlayerViewController 的视频重力。

    controller.videoGravity = ...

关于ios - Swift AV Player 视频应该是 AspectFill 或全屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948613/

相关文章:

ios - 苹果自制iOS教程帮助: Unintended overlap with nested Stack Views

iphone - 为什么我的 opengl-es 纹理显示为白色?

ios - 在 Array 扩展中的泛型函数中使用 append

ios - 按下按钮到下一个 "storyboard"在 Swift 中以编程方式设计 UI

objective-c - 检查 URL 是否为本地文件?

iphone - 如何使用 CAShapeLayer 绘制图表?

iphone - 如何确定手机和平板电脑网页的 html 元素的大小

iphone - 对我的 iOS 应用程序资源使用 zip 压缩?

ios - 延迟后推送下一个 View Controller ?

ios - 在 iOS 中加载特定日期和时间的图像