我有一个MovieViewController作为UINavigationController的孩子。我使用MPMoviePlayerViewController播放从MovieViewController触发的视频流,在该视频视图中,它可以将方向更改为横向或纵向。我只需要点击完成按钮,MovieViewController再次转为肖像模式,因为它只支持肖像模式。
这是代码
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationMaskPortrait;
}
- (NSUInteger) supportedInterfaceOrientations {
return(UIInterfaceOrientationMaskPortrait);
}
- (BOOL) shouldAutorotate {
return FALSE;
}
但是当我点击完成按钮时,它会崩溃, “preferredInterfaceOrientationForPresentation必须返回支持的接口方向!”
注意:我以模态方式调用了moviePlayer。
NSURL *movieURL = [NSURL URLWithString:@"URL"];
player =[[MyMoviePlayerViewController alloc]
initWithContentURL:movieURL];
[self presentViewController:player animated:YES completion:nil];
所以在调用它之后,会有一个按钮来解除视图。问题是当我以横向模式观看电影并点击完成按钮时,它崩溃了,因为我只有一个支持的界面(肖像)。
答案 0 :(得分:2)
您需要做一些事情。
首先,删除此行 - 已弃用。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationMaskPortrait;
}
其次,继承您的UINavigationController并添加以下代码:
- (NSUInteger)supportedInterfaceOrientations
{
NSUInteger orientation = UIInterfaceOrientationMaskPortrait;
if ([self.navigationController.visibleViewController isMemberOfClass:[MPMoviePlayerViewController class]]) {
orientation = UIInterfaceOrientationMaskAll;
}
return orientation;
}
- (BOOL)shouldAutorotate
{
return YES;
}
在这段代码中,我假设您在MovieViewController上推送MPMovieController(通过navigationController)。
答案 1 :(得分:0)
感谢所有答案,但这是解决我上述所有问题的代码。
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}