gpt4 book ai didi

ios - iPhoneX 中的 AVPlayerViewController 控件

转载 作者:行者123 更新时间:2023-11-28 23:41:26 24 4
gpt4 key购买 nike

我找不到在 iPhoneX 中显示 AVPlayerViewController 控件的解决方案。通过使用 AVPlayerViewController.gravity = .aspectfill 显示控件,但视频会填满整个屏幕并剪辑剩余部分。任何想法??这是我的代码:

func loadVideoURL () {

let fileURL = URL.init(string: (exerciseDetailsObj?.video_file)!)
avPlayer = AVPlayer(url: fileURL!)

let playerController = AVPlayerViewController()
playerController.player = avPlayer
playerController.view.frame = CGRect(x: 0, y: 0, width:viewPlayerContainer.bounds.size.width, height: viewPlayerContainer.bounds.size.height)
playerController.showsPlaybackControls = false
avPlayerController = playerController

self.addChild(avPlayerController)
viewPlayerContainer.addSubview(avPlayerController.view)
viewPlayerContainer.sendSubviewToBack(avPlayerController.view)
avPlayerController.didMove(toParent: self)

avPlayerController.addObserver(self, forKeyPath: "videoBounds", options: NSKeyValueObservingOptions.new, context: nil)
}
}

func enterFullscreen(playerViewController: AVPlayerViewController) {
playerViewController.showsPlaybackControls = true //not dispalyed in iphonX

let selectorName: String = {
if #available(iOS 11.3, *) {
return "_transitionToFullScreenAnimated:interactive:completionHandler:"
} else if #available(iOS 11, *) {
return "_transitionToFullScreenAnimated:completionHandler:"
} else {
return "_transitionToFullScreenViewControllerAnimated:completionHandler:"
}
}()
let selectorToForceFullScreenMode = NSSelectorFromString(selectorName)

if playerViewController.responds(to: selectorToForceFullScreenMode) {
playerViewController.perform(selectorToForceFullScreenMode, with: true, with: nil)
}
}

func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)
{
if keyPath == "videoBounds"
{
if let rect = change?[.newKey] as? NSValue
{
if let newrect = rect.cgRectValue as CGRect?
{
if newrect.size.height <= 214
{
avPlayerController.showsPlaybackControls = false
}
}
}
}
}

最佳答案

看看这个。请引用代码并相应更改为您的代码。

@IBOutlet weak var videoPlayerView: UIView! // Take UIview on storyboard on which you want to display video

var player: AVPlayer?
var playerController = AVPlayerLayer()

override func viewDidLoad()
{
self.videoPlayerView.layer.insertSublayer(playerController, at: 0)

player = AVPlayer(url: videoUrl!)

playerController.player = player

self.player?.play()
}


override func viewDidLayoutSubviews() {
playerController.videoGravity = AVLayerVideoGravity(rawValue: AVLayerVideoGravity.resizeAspectFill.rawValue)
playerController.frame = self.videoPlayerView.bounds
}

关于ios - iPhoneX 中的 AVPlayerViewController 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53293703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com