如何禁用全屏视频?

时间:2019-09-05 09:34:00

标签: ios swift avfoundation avkit

我正在设置一些播客,我想将视频的封面图像更改为全屏显示时的scaleAspectFit,而不是全屏显示时的scaleAspectFill。我该怎么做并禁用全屏显示选项?

这是使用Apple的AVKit框架的Swift项目。过去,我尝试将全屏和非全屏都更改为特定的内容模式,但是当全屏显示或返回正常屏幕时,此内容模式不会更改。

private func addPlayer() {
        // If audio URL is invalid, return
        guard let audioURL = URL(string: material?.content?.first??.source ?? "") else { print("Invalid podcast audio URL."); return }
        // Setup AVPlayerViewController
        let playerViewController = AVPlayerViewController()
        playerViewController.player = AVPlayer(url: audioURL)
        playerViewController.view.frame = playerView.bounds
        playerView.addSubview(playerViewController.view)
        // Add image view
        guard let podcastImageurl = URL(string: material?.coverImage?.source ?? "") else { return }
        guard let imageData = (try? Data(contentsOf:podcastImageurl)) else { return  }
        //        podcast(imageData: imageData)
        let imageView = UIImageView(image: UIImage(data: imageData))
        imageView.contentMode = .scaleAspectFill
        playerViewController.contentOverlayView?.addSubview(imageView)
        // Add observer (to update image view size)
        playerViewController.addObserver(self, forKeyPath: "videoBounds", options: NSKeyValueObservingOptions.new, context: nil)
        // Set playerViewController
        self.playerViewController = playerViewController
    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "videoBounds", let contentOverlayView = playerViewController?.contentOverlayView, let imageView = contentOverlayView.subviews.first as? UIImageView {
            let overlayWidth = contentOverlayView.frame.width
            let screenWidth = UIScreen.main.bounds.width
            let screenHeight = UIScreen.main.bounds.height
            imageView.frame = overlayWidth == screenWidth || overlayWidth == screenHeight ? CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight) : contentOverlayView.frame
        }
    }

我希望视频根据视频的大小(全屏或不全屏)更改内容模式(scaleAspectFit或scaleAspectFill)。另外,我希望能够在需要时将视频禁用为全屏显示。

0 个答案:

没有答案