Что такое PGHostedWindow в оконной иерархии на iPad и как предотвратить их создание?

Хорошо. Здесь вопрос. У меня есть контроллер tabBar, на вкладке с индексом 0 у меня есть TableView с ячейками, показывающими видео AVPlayerViewController. Для iPhone, когда я печатаю содержимое UIApplication.shared.windows - у него есть только 2 окна - UIWindow и UITextEffectWindow. Но для iPad - это UIWindow, UITextEffectWindow и несколько PGHostedWindow (3-4 зависит от количества ячеек с видео). Что это за PGHostedWindows? Мне кажется, что они создаются вместе с AVPlayer, когда его представление добавляется в иерархию представлений ячейки - и это привело меня к мысли, что это может быть связано со способностью iPad показывать видео в режиме "картинка в картинке". Но даже если я установлю AVPlayerViewController's allowPictureInPicture в значение false - эти окна все еще создаются. И худшая часть - даже если я прокручиваю эти ячейки с видео из видимой области или перехожу на другую вкладку - эти PGHostedWindows не освобождаются. Так что вопрос - что это за PGHostedWindows/ и как предотвратить их создание?

1 ответ

Я пытался отладить проблему AVKit с восстановлением из картинки в картинке, а также заметил и задался вопросом о PGHostedWindow. Как сказал другой комментатор, я не вижу причин для беспокойства по поводу его создания или срока службы. Насколько я понимаю, AVPlayer перемещает AVPlayerLayer между окнами при входе / выходе из PiP, и этим окном управляет система.

Следует отметить, что привело меня сюда: я заметил, что существует давняя проблема, когда любые подвиды на AVPlayerLayer обрезаются видео после переустановки представления в PiP. Образец кода Apple имеет ту же проблему, если элементы управления расширены. Так что, возможно, есть несколько проблем с PGHostedWindow, но мы застряли с ними.

Другие вопросы по тегам