如何让 MPMoviePlayerController 的视图在非全屏时在旋转时调整大小

How to get MPMoviePlayerController's view to resize on rotate when it is not full-screen

我们的客户想要在屏幕上的视图中显示视频。该代码创建一个 MPMoviePlayerController 并将其视图安装为其容器视图的子视图,就像文档所说的那样:

  moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: myVideoURL];
  [moviePlayer prepareToPlay];
  [moviePlayer.view setFrame: _videoPlaybackContainerView.bounds];

  moviePlayer.controlStyle = MPMovieControlStyleNone;
  [_videoPlaybackContainerView addSubview: moviePlayer.view];

我将容器视图设置为在视图控制器的内容视图因自动旋转而调整大小时调整大小。

如果我在播放视频时旋转设备,您会看到容器视图调整了大小,但视频没有。它被剪裁,不在视图中心等。

我想我可以尝试在玩家的视图上设置调整大小的蒙版(我们没有为这个项目使用 AutoLayout)但是文档确实说要把玩家的视图当作一个不透明的结构,我不确定调整大小蒙版是否违反了这一点。

我在网上搜索了很多帮助,但我能找到的所有其他讨论都涉及电影播放器​​视图 CONTROLLER(另一种动物)或全屏显示,这也是不同的.

我已经解决了

我将填充模式设置为纵横比:

moviePlayer.scalingMode = MPMovieScalingModeAspectFit

然后当我在我的视图控制器中收到 didRotateFromInterfaceOrientation 调用时,我调整容器视图的大小并简单地显式更改电影播放器​​视图的框架。

我必须做一些相当复杂的数学运算才能让我的视频容器视图调整到最大尺寸,但可以准确保留纵横比。如果我们使用 AutoLayout,那可能会很简单。