我有一个表格视图,其中一个单元格包含一个视图,AVPlayer 在该视图上呈现视频。工作正常。我想做的是允许用户旋转设备并让 AVPlayer 然后渲染到另一个全屏视图。有关如何执行此操作的任何指示?
我已经成功地将 AVPlayer 的 CALayer 作为子层添加到全屏视图,但是一旦我这样做,AVPlayer 就会停止播放并且我无法再次启动它。我没有收到有关其状态的通知,也没有错误。
我会很感激任何方向。
我有一个表格视图,其中一个单元格包含一个视图,AVPlayer 在该视图上呈现视频。工作正常。我想做的是允许用户旋转设备并让 AVPlayer 然后渲染到另一个全屏视图。有关如何执行此操作的任何指示?
我已经成功地将 AVPlayer 的 CALayer 作为子层添加到全屏视图,但是一旦我这样做,AVPlayer 就会停止播放并且我无法再次启动它。我没有收到有关其状态的通知,也没有错误。
我会很感激任何方向。
我设法通过简单地将视图(包含带有 AVPlayerLayer 的视图)设置为另一个全屏视图,然后将其旋转/缩放到全屏来解决这个问题。正如马特在上面的评论中提到的那样,无需担心多个 AVPlayer 等。
假设我们有 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 ftg_removeFromParentVC];
[UIApplication sharedApplication].keyWindow.rootViewController = moviePlayerVC;
嵌入式
[UIApplication sharedApplication].keyWindow.rootViewController = mainVC;
[mainVC ftg_addChildVC:moviePlayerVC];