关闭 MPMoviePlayerViewController 后自动旋转 ViewController
Posted
技术标签:
【中文标题】关闭 MPMoviePlayerViewController 后自动旋转 ViewController【英文标题】:Autorotating ViewController after dismissing MPMoviePlayerViewController 【发布时间】:2014-02-24 14:57:11 【问题描述】:在您否决这个问题之前,请注意,我已经尝试实现 *** 上的所有可用解决方案。问题来了:
我的应用程序仅在纵向模式下运行。唯一需要横向的是视频播放器。当用户点击我的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;
有了它,一切都很好,除了一件事 - 当视频结束或用户在横向模式下点击 “完成” 按钮时,我的视图控制器也会以横向模式出现。
除此之外,我尝试了很多其他方法 - 但似乎没有任何效果。
我会很高兴得到任何帮助!
【问题讨论】:
参见***.com/questions/21911151 - 这似乎是MPMoviePlayerController
实现中的一个错误。
【参考方案1】:
感谢@Shubham - Systematix the answer。
我所要做的就是删除所有与自动旋转相关的代码,除了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;
当我这样做时,一切都像魔术一样!
【讨论】:
以上是关于关闭 MPMoviePlayerViewController 后自动旋转 ViewController的主要内容,如果未能解决你的问题,请参考以下文章