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