在之前的iOS版本中,我们的视频会自动旋转,但在iOS 6中则不再如此。我知道presentMoviePlayerViewControllerAnimated之前的设计是为了做到这一点,但我如何告诉MPMoviePlayerViewController自动旋转?
MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:moviePlayer];
答案 0 :(得分:10)
在appdelegate.m中:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if ([[self.window.subviews.lastObject class].description isEqualToString:@"MPMovieView"]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
return UIInterfaceOrientationMaskPortrait;
}
}
有点黑客,但效果很好......
答案 1 :(得分:6)
我遇到了同样的问题。 James Chen的解决方案是正确的,但我最终做了一些更简单的工作 - 覆盖应用程序:supportInterfaceOrientationsForWindow在我的app委托中,并返回allButUpsideDown如果我的rootView控制器是模态呈现MPMoviePlayerViewController。不可否认,这可能并不适合所有情况,但是我不得不改变所有视角控制器:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return [rootViewController.modalViewController isKindOfClass:MPMoviePlayerViewController.class ] ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskAllButUpsideDown;
}
答案 2 :(得分:4)
这不仅限于MPMoviePlayerViewController
。从iOS 6开始,自动旋转已经改变。见Autorotate in iOS 6 has strange behaviour。
要使您的应用程序在iOS 6之前运行,您必须使应用程序支持所有方向(在plist中编辑UISupportedInterfaceOrientations
),然后对于不支持旋转的所有其他视图控制器,覆盖此方法返回NO:
- (BOOL)shouldAutorotate {
return NO;
}
默认情况下,MPMoviePlayerViewController
支持所有方向,因此这应足以使其正常工作。
答案 3 :(得分:1)
我看到在iOS 6中有很多类似的应用方向帖子。但总的来说,解决方案非常简单: https://stackoverflow.com/a/13279778/691660