gpt4 book ai didi

ios - 嵌套的 AVPlayer 全屏?

转载 作者:行者123 更新时间:2023-11-28 10:54:26 29 4
gpt4 key购买 nike

我有一个 AVPlayer,它位于 collectionview 单元格内,位于 UICollectionView 内,位于 collectionview 单元格内。

我想为 AVPlayers 框架设置动画以适应整个屏幕,本质上是全屏过渡,但是由于层次结构,我无法访问主 Collection View 键窗口...

这是我目前使用的代码,试图访问全屏边界。

let window = UIApplication.shared.keyWindow!
let v = UIView(frame: CGRect(x: -(window.frame.origin.x), y: (window.frame.origin.y) / 2, width: (window.frame.width) / 2, height: (window.frame.height) / 2 ))


UIView.animate(withDuration: 1, delay: 0, options: UIViewAnimationOptions.curveEaseOut, animations: {
self.playerView?.bounds = v.bounds
self.layoutIfNeeded()
}, completion: { (completed) in

})

当前所做的是将 playerView 屏蔽到单元格中嵌套的 collectionView 的边界。这让我相信,由于层次结构的原因,该方法可能不可行。

我希望会有像 AVPlayer.fullscreen() 之类的方法,因为我知道可以使用 AVPlayerControllers 覆盖 View 来获取全屏视频,但我不希望用户必须按下按钮才能播放全屏。我更喜欢目前的点击视频的方法。

有什么建议吗?

最佳答案

您需要使用 AVPlayerLayer 该层将作为子层添加到您想要的 View 中。

在这种情况下,首先您需要将 UIView 添加到您的 collectionViewCell 并将您的 AVPlayerLayer 实例添加为子层。

当用户点击单元格时,您必须首先从单元格中删除 AVPlayerLayer 并将引用传递给您的 Root View Controller ,您可以在其中添加一个新的 UIView,其大小与整个屏幕相同,并且添加 AVPlayerLayer 作为该 View 的子层。

请记住,如果您有一个导航 Controller ,您应该将该 UIView 添加为导航 Controller 的 subview ,如果您有一个 tabBar,则需要将它添加到已安装的 tabBar。

要从“全屏”模式返回,请执行相反的操作。

关于ios - 嵌套的 AVPlayer 全屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557368/

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