4

在 iPhone 4/4s 的 iOS5 应用程序中,我有一个 UIViewController,其中添加了一个 MPMoviePlayerController 视图:

[self.view insertSubview:self.fullscreenMoviePlayerController.view atIndex:2];

UIViewController 只支持横向:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation 
{
  // Return YES for supported orientations.
  return  interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
          interfaceOrientation == UIInterfaceOrientationLandscapeRight;

}

这正确地将旋转锁定为仅横向。但是,当我将 MPVideoPlayerController 设置为全屏显示时,这将被忽略,并且视频不再被限制为横向并旋转到手机所在的任何方向。

如何防止 MPMoviePlayerController 的视频全屏旋转到纵向?当手机旋转到纵向时,视频不旋转是至关重要的。

我尝试子类化 MPVideoPlayerController 并覆盖 shouldAutorotateToInterfaceOrientation:,但这没有效果。

MPMoviePlayerController 只是视图的一部分,因此绝对不能使用 MPMoviePlayerViewCotroller。

4

4 回答 4

2

如果您真的想避免使用 MPMoviePlayerViewController,这似乎相当困难。一个选项,即使你在全屏模式下似乎也有效,是手动设置 MPMoviePlayerController 视图的框架。(请注意,在其他 iOS 问题中,有时使用背景视图会产生不同的结果,但值得一试)。

MyMPMoviePlayerController.view.frame = CGRectMake(0, 0, your numbers, here);

但是,Apple 在他们的文档中说,控制器的框架应该设置为其父视图的框架。

[MyMPMoviePlayerController.view setFrame: parentView.bounds];

不太优雅的解决方案,但即使不是这样也可能有效的解决方案是:

侦听 UIDeviceOrientationDidChangeNotification 并查看电影播放器​​的视图。在其上应用变换、边界和中心(或框架等),使其仍适合横向视图。基本上每次它试图旋转时都将其转换回来。(这一切都假设你真的不能用 shouldAutorotateToInterfaceOrientation 阻止它旋转:)。

这里唯一的问题是它可能会使电影保持纵向,但会扭曲视图,这不是预期的结果。

于 2012-07-16T16:30:10.140 回答
0

是的,我看到你说使用 MPMoviePlayerViewController 不是一个选项:

仍然......为什么不尝试制作您拥有的 ViewController 的 MPMoviePlayerViewController ,否则它包含 MPMoviePlayerController 和您的视图控制器中的其他项目。关于这一点的好处是 MPMoviePlayerViewController 已经内置了 MPMoviePlayerController。您只需引用它而不是您自己的 viewController 中的 MPMoviePlayerController。具有您可以覆盖的 shouldAutorotateToInterfaceOrientation 并且应该为您做正确的事情。

于 2012-07-17T08:44:12.973 回答
-1

您可以准备两个视频。如果没有其他选择。

于 2012-07-13T08:29:39.830 回答
-2

请访问链接,默认情况下仅在横向模式下显示视频,它这样做http://mobiledevelopertips.com/video/getting-mpmovieplayercontroller-to-cooperate-with-ios4-3-2-ipad-and-earlier- iphone-sdk.html 的版本。我希望它能解决你的问题。

于 2012-07-10T09:46:21.303 回答