在您将此问题投票之前,请注意,我已经尝试在stackoverflow上实现所有可用的解决方案。这是问题所在:
我的应用程序仅在纵向模式下运行。唯一需要在景观中的是视频播放器。当用户点击我的TableViewCell
时,会调用此代码块:
MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoUrl];
[self presentMoviePlayerViewControllerAnimated:moviePlayer];
之后,我需要让用户能够以纵向和横向模式观看视频。完成后,一切都应该回到纵向模式。我试图在AppDelegate.m
:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
NSUInteger orientations = UIInterfaceOrientationMaskPortrait;
if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]]) {
orientations = UIInterfaceOrientationMaskAllButUpsideDown;
}
return orientations;
}
有了它,一切都很好,除了一件事 - 当视频结束或当用户在横向模式下点击“完成”按钮时,我的视图控制器也会以横向模式显示。
除此之外,我尝试了很多其他方法 - 但似乎没有任何工作。
我会很高兴得到任何帮助!
答案 0 :(得分:1)
感谢@Shubham - the answer的Systematix。
除了AppDelegate
中的此方法外,我所要做的就是删除与自动旋转相关的所有代码:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if ([[window.rootViewController presentedViewController] isKindOfClass: [MPMoviePlayerViewController class]])
{
//NSLog(@"in if part");
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else
{
//NSLog(@"in else part");
return UIInterfaceOrientationMaskPortrait;
}
}
当我这样做时,一切都像魔术一样!