加载多个 MPMoviePlayer 控制器并正确将它们设置为空闲,而不会崩溃和控件消失



所以,我已经阅读了文档并意识到了这一点:iOS 3.2/4.0上的多个MPMoviePlayer控制器(另外,我的意思是苹果的文档)

不幸的是,调试这是地狱BC:Xcode IPHONE中的引导服务器错误

因此,每运行 5 次左右,我必须重新启动我的机器。

但主要问题是,我加载了很多容器(只是视图)。在这些容器中,可能有一些带有MPMoviePlayerController的东西,我把它变成了一个自定义类。无论如何,它有效,播放电影就好了。

在任何给定时间,屏幕上最多可以有三个。(我使用分页,并卸载远处的那些)。因此,可以有 3 部电影,所有电影都连接到下载的数据。

他们玩,

但当然,一次只能玩一个。没问题。只有一个包含视图处于活动状态。

当视图更改"页面"(它是UIScrollView)时,我手动将"外部人员"设置为非活动状态。本质上,它在MPMoviePickerController上调用"stop"。这会阻止它,但我无法恢复。控件实际上消失了,我无法恢复。(iOS错误?

所以我叫暂停。同样的事情。

我回去玩它,它不会玩。

这是一个有趣的,暂停一个,然后去玩另一个。崩溃。AVPlayerItem 无法一次播放 2 个的东西。我已经编写了自定义 AV 电影播放器,因为需要 2 部电影或其他什么,如果这不起作用,我将再次这样做。随便...为什么两个控制器使用相同的播放器项目,我只能猜测苹果在一个非常糟糕的地方使用单例。

因此,Apple 文档明确指出我可以加载任意数量的内容,但只能播放一个。不幸的是,它没有说明如何正确暂停它们,"导致控件消失。

有人知道这是否是一个错误吗?还是除了暂停并停下来尝试之外还有其他东西?

如果没有,我可能会求助于 AV 的东西。无论如何,如果不是为了重启,我现在会尝试某种形式的简历,试图得到答案而不仅仅是一个问题。感谢您的任何提示/建议!

如果我找到它会让大家知道

好的,所以这是一种奇怪的解决方法,基本上是照常做。我的自定义视图卸载整个控制器,然后将其设置为 nil(如果您不设置为 nil,即使打算重新加载,也无法在不崩溃的情况下对其进行测试)。

因此,一旦我的视图在屏幕外,我就会向其发送"卸载自己"消息。它缓存 URL 的名称,然后当我将其设置为活动时,它会重新加载并重新分配所有内容。

一切似乎都很好,不幸的是,如果我在屏幕上同时放置一个叠加层,我不知道我会做什么。这真的只是看起来很流畅,因为我的东西在屏幕外。

针对此实例已解决。我可以推荐,给任何寻找的人,使用AVPlayer。在你明白了使用 layerClass 来改变底层,添加一项,并记得正确做内存之后,就不难了。在文档中复制苹果的示例代码...

并准备弄乱纵横比...

感谢您的评论!

最新更新