关闭 AVPictureInPictureController

Closing AVPictureInPictureController

根据文档,willStop 和 didStop 委托方法以及 restoreUserInterfaceForPictureInPictureStopWithCompletionHandler 在 AVPictureInPictureController 关闭时被调用,无论它是如何关闭的。如何判断控制器是通过 "X" 按钮关闭还是通过 return 的其他按钮关闭以正常播放?

X 按钮和恢复按钮的区别是:

点击恢复画中画按钮将触发

"pictureInPictureController(_:restoreUserInterfaceForPictureInPictureStopWithCompl etionHandler:)"
"pictureInPictureControllerWillStopPictureInPicture"
"pictureInPictureControllerDidStopPictureInPicture"

虽然点击关闭按钮将跳过 restoreUserInterface 回调并直接转到

"pictureInPictureControllerWillStopPictureInPicture"
"pictureInPictureControllerDidStopPictureInPicture"

因此您可以使用 Bool 标志来检查 willStop/DidStop 它是否调用了 restoreUserInterface。

在 AVPictureInPictureViewController 中还有一个 pictureInPictureSuspended 属性 但我尝试检查它的值并发现它总是 return false 在这两种情况下所以我必须使用上面的技巧来检查用户是否点击了恢复或关闭按钮。