如何为IOS6中的MPMoviePlayerController提供只有一个景观的视图

如何为IOS6中的MPMoviePlayerController提供只有一个景观的视图

问题描述:

我花了2小时找到正确的代码来修复我的方向问题 这是我的电影播放器​​代码。我需要将这个特定的视图呈现在风景中。如何为IOS6中的MPMoviePlayerController提供只有一个景观的视图

在appdelegate我设置所有的方向,并在我的rootviewcontroller我设置为只有肖像和在我的movieplayer视图为风景,但不是运气。有谁能给我一些关于如何解决问题的评论吗?

- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

我RootViewController的

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 
- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 


-(void)prepareIntroVideo 
{ 
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"designthinking_pt1" ofType:@"mp4"]]; 
    self.playercontroller = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    [self.playercontroller.view setFrame:CGRectMake(0, -20, 320, 480)]; 
    self.playercontroller.movieSourceType = MPMovieSourceTypeFile; 
    self.playercontroller.scalingMode = MPMovieScalingModeAspectFill; 
    self.playercontroller.fullscreen = NO; 
     self.playercontroller.controlStyle = MPMovieControlStyleFullscreen; 
    //playercontroller.controlStyle = MPMovieControlStyleFullscreen; 
    self.playercontroller.view.userInteractionEnabled =YES; 
    self.playercontroller.view.backgroundColor = [UIColor blackColor]; 
    self.playercontroller.shouldAutoplay = NO; 

    //playercontroller.repeatMode = YES; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlaybackComplete:) 
               name:MPMoviePlayerPlaybackDidFinishNotification 
               object:self.playercontroller]; 


    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(applicationDidEnterBackground) 
               name: UIApplicationDidEnterBackgroundNotification 
               object:[UIApplication sharedApplication]]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(applicationWillEnterForeground) 
               name:UIApplicationWillEnterForegroundNotification 
               object:[UIApplication sharedApplication]]; 


    [self.playercontroller prepareToPlay]; 
    [self.view addSubview:self.playercontroller.view]; 
    [self.playercontroller setFullscreen:YES animated:YES]; 


    //[self.playercontroller stop]; 
    [self.view sendSubviewToBack:self.playercontroller.view]; 

} 

- (BOOL)shouldAutorotate 
{ 
    return YES; 
} 
- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationLandscapeLeft; 
} 
+0

那么...任何更新? – TonyMkenu 2013-05-17 13:08:25

您可以检查我的例子... https://dl.dropboxusercontent.com/u/19438780/testRotate.zip

我有2个控制器,导航控制器 - 肖像;对于这个我“subclassed”导航控制器(这里是“肖像旋转”代码)

第3个控制器是风景 - 必须呈现模态,如果你想旋转它 - 相应的旋转代码。

+0

嗨@tonyMkenu,我试了一下,但它不适合我的情况,让我把代码发布一段时间 – Desmond 2013-05-20 09:05:39

我会去了解一下preferredInterfaceOrientationForPresentation,我在几个月前花了约一个星期这个问题。我不记得确切我如何解决它,但我知道它有一些东西需要与实施该方法