Ok.这是个问题。我有选项卡栏控制器,在索引 0 的选项卡中,我有一个 TableView,其中包含显示 AVPlayerViewController 视频的单元格。对于iPhone,当我打印UIApplication.shared.windows的内容时 - 它只有2个窗口 - UIWindow和UITextEffectWindow。但对于iPad - 它有UIWindow,UITextEffectWindow和几个PGHostedWindow(3-4取决于带有视频的单元格数量)。 那些PGHostedWindows是什么?在我看来,当AVPlayer的视图被添加到单元格的视图层次结构时,他们正在与AVPlayer一起创建 - 这让我想到它可能与iPad以"画中画"模式显示视频的能力有关。 但即使我将AVPlayerViewController的allowsPictureInPicture设置为false-这些窗口仍在创建。最糟糕的部分 - 即使我滚动这些单元格与可见区域的视频,或转到另一个选项卡 - 那些PGHostedWindows没有被解除分配。 所以问题是 - 那些PGHostedWindows/是什么以及如何防止它们的创建?
我正在尝试调试从画中画恢复的 AVKit 问题,并且还注意到并想知道 PGHostedWindow。就像另一位评论者所说,我认为没有理由担心它的创造或寿命。我的理解是AVPlayer在移入/移出PiP时在窗口之间移动AVPlayer层,而这个窗口是系统管理的窗口。
值得注意的是,这让我来到了这里:我注意到有一个长期存在的问题,即在 PiP 上重新安装视图后,AVPlayerLayer 上的任何子视图都会被视频剪辑。如果扩展控件,Apple 的示例代码也存在相同的问题。所以也许PGHostedWindow有一些问题,但我们坚持了下来。