MPMoviePlayerController不会自动旋转到横屏模式。

4

嘿,
我的应用程序具有选项卡导航和其他所有内容都是竖屏模式,不支持旋转。现在我必须流式传输此视频,该视频必须为横向模式。 我正在使用MPMoviePlayerController,基本上工作正常,但尽管它被说成自动旋转到横向模式,但仍保持竖屏模式。

- (IBAction) openFourthInfo:(id)sender{
NSURL *url = [NSURL URLWithString:@"http://my-video.mp4"];
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];  

[[NSNotificationCenter defaultCenter] addObserver:self  
                                         selector:@selector(moviePlaybackComplete:)  
                                             name:MPMoviePlayerPlaybackDidFinishNotification  
                                           object:player]; 

[[NSNotificationCenter defaultCenter] addObserver:self  
                                         selector:@selector(userPressedDone:)  
                                             name:MPMoviePlayerWillExitFullscreenNotification  
                                           object:player]; 

[self.view addSubview:player.view];  
[mainView setHidden:YES]; //Need to hide another subview here

player.fullscreen = YES;  
[player play];
}

这是我如何调用Player。在userPressedDone:moviePlaybackComplete:中,我基本上只需设置mainView.setHidden = YES;,删除观察者,删除并释放播放器。
没有什么特别的。有任何想法为什么播放器仍然保持竖屏?
我尝试过

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; 

它会动态地展示状态栏的变化,但是视图保持不变。通过添加...
[[player view] setBounds:CGRectMake(20, 0, 480, 320)];
[[player view] setCenter:CGPointMake(160, 240)];
[[player view] setTransform:CGAffineTransformMakeRotation(M_PI / 2)]; 

什么都没有发生。将player view替换为self view后,我只是得到了父视图的旋转,而不是玩家视图。

问题出在哪里,我该如何解决?我已经尝试了5个小时左右 -.-
谢谢!

1个回答

5

MPMoviePlayerController默认情况下不支持横屏,因此需要对视图应用变换才能在横屏模式下正常工作。

UIView * playerView = [moviePlayerController view];
[playerView setFrame: CGRectMake(0, 0, 480, 320)];

CGAffineTransform landscapeTransform;
landscapeTransform = CGAffineTransformMakeRotation(90*M_PI/180.0f);
landscapeTransform = CGAffineTransformTranslate(landscapeTransform, 80, 80);

[playerView setTransform: landscapeTransform];

此外,如果您想要标准的全屏控件,请使用以下示例。
moviePlayerController.fullscreen = TRUE;
moviePlayerController.controlStyle = MPMovieControlStyleFullscreen;

谢谢您的快速回复,这很有帮助!但是这样一来,“完成”按钮就消失了,所以没有中止电影的机会..我该如何让它重新出现? - Nareille
1
再次感谢!moviePlayerController.fullscreen = TRUE; 这个会破坏它,显示主视图,并且不会旋转视图,如果去掉这一部分,它就很好用!谢谢! - Nareille
1
如果它没有与其他语言结合在一起,那么它应该是 moviePlayerController.fullscreen = YES; - Abby Chau Yu Hoi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接