2

我有一个表格视图,其中一个单元格包含一个视图,AVPlayer 在该视图上呈现视频。工作正常。我想做的是允许用户旋转设备并让 AVPlayer 然后渲染到另一个全屏视图。有关如何执行此操作的任何指示?

我已经成功地将 AVPlayer 的 CALayer 作为子层添加到全屏视图,但是一旦我这样做,AVPlayer 就会停止播放并且我无法再次启动它。我没有收到有关其状态的通知,也没有错误。

我会很感激任何方向。

4

2 回答 2

0

我设法通过简单地将视图(包含带有 AVPlayerLayer 的视图)设置为另一个全屏视图,然后将其旋转/缩放到全屏来解决这个问题。正如马特在上面的评论中提到的那样,无需担心多个 AVPlayer 等。

于 2014-07-20T02:06:24.117 回答
0

假设我们有 MoviePlayerVC,它添加了 AVPlayerLayer 作为子层,它是 MainVC 的子视图控制器。

设置

window.rootViewController = mainVC;
[mainVC ftg_addChildVC:moviePlayerVC]; // Using container view controller

有 3 种方法可以启用全屏模式

  • 删除moviePlayerVC,然后展示它

    [moviePlayerVC ftg_removeFromParentVC]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 这使它在另一个运行循环 [mainVC presentViewController:moviePlayerVC animated:YES completion:nil]; });

这不像窗口接近那样快速和平滑

  • 添加moviePlayerVC到keyWindow
  • 将 moviePlayerVC 添加到新窗口(参见FLEX

全屏

[moviePlayerVC ftg_removeFromParentVC];
[UIApplication sharedApplication].keyWindow.rootViewController = moviePlayerVC;

嵌入式

[UIApplication sharedApplication].keyWindow.rootViewController = mainVC;
[mainVC ftg_addChildVC:moviePlayerVC];
于 2015-04-23T02:37:08.210 回答