在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绝对不是一个选项。
答案 0 :(得分:2)
如果您真的想避免使用MPMoviePlayerViewController,这似乎相当困难。 一个选项,即使你全屏显示也可以工作,是手动设置MPMoviePlayerController视图的框架。 (请注意,在其他iOS问题中,有时使用背景视图会产生不同的结果,但值得一试)。
MyMPMoviePlayerController.view.frame = CGRectMake(0, 0, your numbers, here);
然而,Apple在他们的文档中说控制器的框架应该设置为它的父视图的框架。
[MyMPMoviePlayerController.view setFrame: parentView.bounds];
不那么优雅的解决方案,但即使那个不合适也可以工作:
收听UIDeviceOrientationDidChangeNotification并获取电影播放器的视图。在其上应用transfrom,bounds和center(或框架等),使其仍适合横向视图。每次尝试旋转时基本上将其转换回来。 (这都是假设你真的无法通过shouldAutorotateToInterfaceOrientation保持旋转:)。
这里唯一的问题是,它可能会使电影保持纵向状态,但却会影响视图,这不是理想的结果。
答案 1 :(得分:0)
仍然......为什么不尝试制作ViewController的MPMoviePlayerViewController,否则它包含MPMoviePlayerController和视图控制器中的其他项目。关于这个的好处是MPMoviePlayerViewController已经内置了MPMoviePlayerController。你只需要引用它而不是你自己的viewController中的MPMoviePlayerController。有你可以覆盖的shouldAutorotateToInterfaceOrientation,应该为你做正确的事。
答案 2 :(得分:-1)
您可以准备两个视频。如果没有别的选择。
答案 3 :(得分:-2)
请访问仅在横向模式下显示视频的链接,默认情况下http://mobiledevelopertips.com/video/getting-mpmovieplayercontroller-to-cooperate-with-ios4-3-2-ipad-and-earlier-versions-of-iphone-sdk.html。我希望它能解决你的问题。