我们的客户希望在屏幕上的视图中显示视频。该代码创建了一个MPMoviePlayerController,并将其视图作为其容器视图的子视图进行安装,就像文档所说的那样:
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: myVideoURL];
[moviePlayer prepareToPlay];
[moviePlayer.view setFrame: _videoPlaybackContainerView.bounds];
moviePlayer.controlStyle = MPMovieControlStyleNone;
[_videoPlaybackContainerView addSubview: moviePlayer.view];
我将容器视图设置为在视图控制器的内容视图因自动旋转而调整大小时调整大小。
如果我在播放视频时旋转设备,您可以看到容器视图调整大小,但视频没有。它会被剪裁,不会在视图中居中等等。
我想我可以尝试在播放器的视图中设置调整大小的面具(我们不会在此项目中使用AutoLayout),但文档会说将播放器的视图视为一个不透明的结构,我不确定是否用它来调整屏幕是否违反了这个结构。
我在网上搜索了大量的帮助,但我能找到的所有其他讨论要么处理电影播放器视图CONTROLLER(不同的动物),要么全屏显示,这也是不同的。 / p>
答案 0 :(得分:2)
我已经解决了。
我将填充模式设置为宽高比:
moviePlayer.scalingMode = MPMovieScalingModeAspectFit
然后当我在视图控制器中获得didRotateFromInterfaceOrientation调用时,我调整了容器视图的大小,只是明确地更改了电影播放器视图的帧。
我必须做一些相当粗糙的数学运算才能让我的视频容器视图调整到最大尺寸,尽管保留了宽高比。如果我们使用AutoLayout,这可能会很简单。