2012-03-09 54 views
2

下有没有什么在改变5.1会影响如何MPMoviePlayerViewController工程有关设备的方向?MPMoviePlayerViewController不是在横向方向打5.1

我开始从今天的用户那里收到只有在肖像模式下播放视频的报告。我发现他们正在使用5.1,我很快升级了一个设备来重现这种情况。我的代码没有改变,在4.x,5.0和5.01中完美工作。

我的应用程序中的所有视图都以纵向模式显示,除非用户点击某个视频时,电影播放器​​应该接管整个屏幕并将其投放到更多环境中。该应用程序使用5.0 SDK但目标为4.0。下面是我用来显示视频的代码:

VideoPlayer *vp = [[VideoPlayer alloc] initWithContentURL:movieURL]; 
vp.moviePlayer.movieSourceType = src; 
vp.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
vp.moviePlayer.shouldAutoplay = TRUE; 
[self presentMoviePlayerViewControllerAnimated:vp]; 

的VideoPlayerMPMoviePlayerViewController一个子类,其中shouldAutorotateToInterfaceOrientation被重写,像这样:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
return (interfaceOrientation == UIDeviceOrientationLandscapeLeft); 
} 

这种模式建议遍布互联网甚至苹果。我不明白为什么它不在iOS 5.1下工作,或者为什么更多的人不会抱怨这一点。

任何帮助将不胜感激。

+0

我有同样的问题,而不是与电影播放器​​,但只是与一个普通的viewcontroller,它显示它在肖像模式,但shoudlAutorotate方法返回NO肖像模式,如果你有一个解决方案,请张贴它:) – 2012-03-09 12:14:09

+0

我还没有找到解决方案。糟糕的是,我创建了一个新项目并建立了这个基本模式,并且完美地工作。所以......我在想,它与我在生产应用程序中设置的视图层次有关。这看起来更像是一个5.1代码而不是我的代码,因为从3.x开始,它已经完美运行了。 – twktue 2012-03-10 20:30:39

回答

1

我在iOS 5中遇到了同样的问题。我能够使它工作的唯一方法是继承MPMoviePlayerViewController。

@implementation MovieViewController 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
    } else { 
     return UIInterfaceOrientationIsPortrait(interfaceOrientation); 
    } 
} 
@end 

看起来你已经尝试过这样做,但是这个代码块是为我工作在设备上与iOS 5.1。不确定模拟器。

+0

谢谢。保存我的* ss – Eugene 2012-03-15 13:00:09

+0

我也这样做了,它工作。 – iveytron 2012-09-19 21:50:38

0

升级到iOS 5.1后,我有一堆方向问题。对我而言,这是因为允许视图控制器在链上的允许方向导致我添加的模态控制器不允许定向。

在视图层次结构中有两个子视图添加到视图中是否有任何情况?我在applicationDidFinishLaunching中添加了两个子视图到我的窗口,在iOS 5.1之前,他们可以拥有独立的允许方向。也就是说,我可以在纵向上固定一个,而在顶部旋转一个。现在,另一个子视图坚持纵向定位。

我的办法是强迫低于非旋转视图:

[self.window insertSubview:self.nonRotatingViewController.view belowSubview:self.rotatingViewController.view]; 

这篇文章让我明白这一点(并有一些代码): iOS: Disable Autorotation for a Subview

2

我有同样的问题也 - 我是在播放电影上的OpenGL子视图,(IM使在横向模式下的互动电子书所以需要我的电影 - (在一个UIView)的景观发挥也)

我被纠正了这个: 继承开放glview到*的ViewController那么*视图 - 控制连接到窗口

因此,与cocos2d工作,而我现在可以使用所有的UIKit在正确的方向。 发送所有uikit视图到我的子类opengl视图。 (同时确保在我的应用程序委托添加和检查方位的plist陈述过。)

"#if GAME_AUTOROTATION == kGameAutorotationUIViewController 
    [director setDeviceOrientation:kCCDeviceOrientationPortrait]; 
"#else 
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeRight]; 
"#endif 

希望这可以帮助别人:)即时通讯非常新的cocos2d的,因此花了一段时间来弄清楚我是什么做错了。

相关问题