5.1中是否有任何更改会影响 MPMoviePlayerViewController 关于设备方向的工作方式?
我今天开始收到用户的报告,视频只能以纵向模式播放。我发现他们正在使用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];
VideoPlayer 是 MPMoviePlayerViewController 的子类,其中 shouldAutorotateToInterfaceOrientation 被覆盖如下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIDeviceOrientationLandscapeLeft);
}
这种模式建议遍布互联网甚至是Apple。我不明白为什么它不能在iOS 5.1下运行,或者为什么更多的人不抱怨这个。
非常感谢任何帮助。
答案 0 :(得分:2)
我也有同样的问题 - 我在opengl子视图上播放电影,(我在横向模式下制作交互式电子书,因此需要我的电影 - (在uiview中)也可以在风景中播放)
我纠正了这个: 将open glview子类化为* viewcontroller,然后将* viewcontroller链接到窗口
因此,在使用cocos2d
时,我现在可以正确使用所有uikit。
将所有uikit视图发送到我的子类opengl视图。 (同时确保添加我的应用程序委托并检查该方向是否也在plist中说明。)
"#if GAME_AUTOROTATION == kGameAutorotationUIViewController
[director setDeviceOrientation:kCCDeviceOrientationPortrait];
"#else
[director setDeviceOrientation:kCCDeviceOrientationLandscapeRight];
"#endif
希望这有助于某人:)我在cocos2d非常新,所以花了一段时间来弄清楚我做错了什么。
答案 1 :(得分: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设备上适用于我。不确定模拟器。
答案 2 :(得分:0)
升级到iOS 5.1后,我遇到了很多方向问题。对我来说,这是因为兄弟视图控制器在链上的允许方向导致我正在添加的模态控制器没有允许的方向。
在视图层次结构中是否有任何情况会将两个子视图添加到视图中?我在applicationDidFinishLaunching中向我的窗口添加了两个子视图,在iOS 5.1之前,它们可以具有独立的允许方向。也就是说,我可以将一个固定在纵向,而顶部旋转。现在,另一个子视图坚持纵向定位。
我的解决方案是强制下面的非旋转视图:
[self.window insertSubview:self.nonRotatingViewController.view belowSubview:self.rotatingViewController.view];
这篇文章帮助我解决了这个问题(并且有一些代码): iOS: Disable Autorotation for a Subview