将 AVPlayer 引用从单元格传递到视图控制器会冻结视频,但音频会继续
Passing AVPlayer reference from a cell to a view controller freezes video but audio continues
我在 UICollectionViewCell
中有一个 AVPlayer
子类。我有一个按钮,当我按下它时,应该以全屏模式显示相同的视频。我想我可以做的是呈现一个 UIViewController
并将其传递给 AVPlayer
的引用,以便它可以将其添加为子视图并继续播放。但是,发生的事情是将其添加为子视图,视频暂停,但音频继续播放。为什么?我该如何解决?
使用 AVPlayerController 来做到这一点。每当您单击按钮时,只需显示具有相同实例的 AVPlayerController。
@IBAction func buttonTap(_ sender: Any) {
let vc = storyboard?.instantiateViewController(withIdentifier:"FullScreenPlayer") as! FullScreenPlayerViewController
vc.player = playerInCell
present(vc, animated: false)
}
注意:FullScreenPlayerController 是 AVPlayerViewController 的子类
事实证明,如果将 AVPlayer
传递给另一个视图控制器,则必须删除对它的原始强引用。您只能对 AVPlayer
有一个引用,否则它会开始冻结并变得怪异。
我在 UICollectionViewCell
中有一个 AVPlayer
子类。我有一个按钮,当我按下它时,应该以全屏模式显示相同的视频。我想我可以做的是呈现一个 UIViewController
并将其传递给 AVPlayer
的引用,以便它可以将其添加为子视图并继续播放。但是,发生的事情是将其添加为子视图,视频暂停,但音频继续播放。为什么?我该如何解决?
使用 AVPlayerController 来做到这一点。每当您单击按钮时,只需显示具有相同实例的 AVPlayerController。
@IBAction func buttonTap(_ sender: Any) {
let vc = storyboard?.instantiateViewController(withIdentifier:"FullScreenPlayer") as! FullScreenPlayerViewController
vc.player = playerInCell
present(vc, animated: false)
}
注意:FullScreenPlayerController 是 AVPlayerViewController 的子类
事实证明,如果将 AVPlayer
传递给另一个视图控制器,则必须删除对它的原始强引用。您只能对 AVPlayer
有一个引用,否则它会开始冻结并变得怪异。