懒惰加载

时间:2015-11-18 03:47:12

标签: ios objective-c swift

我正在研究需要支持PIP的视频播放应用程序(画中画)。 第一个问题是,一旦app实例化了一个带有播放器层的PIP控制器,如果用户正在播放视频并按下主页按钮,它将自动进入PIP模式。这是默认行为吗?我可以在Apple API文档https://developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForPictureInPicture.html中看到一些声明,但我想确认一下。

  

如果您以这种方式支持PiP但想要选择退出特定视频的PiP,请不要将该视频的AVPlayerLayer与AVPictureInPictureController对象相关联。只要您使用播放器图层实例化Picture in Picture控制器,就可以使播放器图层的视频符合PiP条件;选择退出的方法是不执行该实例化。

我发现的另一件事是,如果app创建了播放器视图(AVPlayerLayer作为图层类),app会初始化PIP控制器,视频无法开始播放PIP控制器可以正常运行,但是如果在播放视频时实例化PIP控制器用户单击PIP按钮。 pictureInPicturePossible 值将为no,无法启动PIP。并且不会调用委托方法。

- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController failedToStartPictureInPictureWithError:(NSError *)error;

有人对此有所了解吗?感谢

1 个答案:

答案 0 :(得分:0)

是的,如果您的应用程序在开始时使用AVPlayerLayer实例化AVPictureInPictureController,则当用户按下Home按钮时,它将自动进入画中画模式。但这只有在您启用“允许音频,Airplay和画中画”的情况下才有可能实现。在'背景模式'在你的应用程序的功能视图下。

另外,为了使画中画行为保持一致,我们必须在开头而不是在两者之间进行初始化。实现委托方法以了解玩家何时进出PiP模式非常方便。

要禁止视频使用PiP模式,并且如果您使用AVKit,只需将其allowPictureInPicturePlayback设置为NO。