2014-10-17 32 views
0

我想在我的纵向应用中使用MPMoviePlayerViewController播放影片。所以,我喜欢这个。重新加载supportedInterfaceOrientationsForWindow或允许MPMoviePlayerViewController处于横向模式

- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 

    if ([[window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]]) { 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    } 
    else { 
     return UIInterfaceOrientationMaskPortrait; 
    } 
} 

因此,我可以在横向模式下玩游戏。但是,当我忽略我的应用程序处于横向模式时。那么,有没有办法在supportedInterfaceOrientationsForWindow中动态地将我的应用更改为肖像模式。我知道我可以在MPMoviePlayerViewController退出时收到通知。但是我不知道如何在退出时将我的应用程序设置回仅用于肖像。

回答

0

1)设置设备方向:仅限肖像模式。

2)之后,去你的ViewController.m类(要显示MPMoviePlayerViewController),并添加此通知:

- (void)viewWillAppear:(BOOL)animated{ 
    UIDevice *device = [UIDevice currentDevice];     //Get the device object 
    [device beginGeneratingDeviceOrientationNotifications];   //Tell it to start monitoring the accelerometer for orientation 

    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; //Get the notification centre for the app 
    [nc addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:device]; 
} 

- (void)orientationChanged:(NSNotification *)note{ 
    UIDeviceOrientation devOrientation = [UIDevice currentDevice].orientation; 
    if (devOrientation==4||devOrientation==3){ 
     //Now rotate the frame of your MPMoviePlayerViewController for Landscape mode 
     [movieController.view setFrame:CGRectMake(0, 0, self.view.frame.size.height, self.view.frame.size.width)]; 
     [movieController.view setTransform:CGAffineTransformMakeRotation(-M_PI_2)]; 

     CGRect slFr6=movieController.view.frame; 
     slFr6.origin.x=0; 
     slFr6.origin.y=0; 
     movieController.view.frame=slFr6; 
    } 
    else if (devOrientation==1||devOrientation==2){ 
     ////Now rotate the frame of your MPMoviePlayerViewController for Portrait mode 
     [movieController.view setTransform:CGAffineTransformMakeRotation(0)]; 
     [movieController.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

     CGRect slFr6=movieController.view.frame; 
     slFr6.origin.x=0; 
     slFr6.origin.y=0; 
     movieController.view.frame=slFr6; 
    } 
} 

//For Adding MPMoviePlayerController use it 
-(void)createPlayer{ 
    MPMoviePlayerController *movieController = [[MPMoviePlayerController alloc] init]; 
    movieController.controlStyle = MPMovieControlStyleDefault;//MPMovieControlStyleNone; 
    [movieController setContentURL:_url]; 
    [movieController.view setFrame:CGRectMake (0,0,self.view.frame.size.width, self.view.frame.size.height)]; 
    [self.view addSubview:movieController.view]; 
    [movieController prepareToPlay]; 
    [movieController play]; 
} 
+0

谢谢您详细解答。如果这样打开,我可以知道该怎么办? MPMoviePlayerViewController * mp = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; [self.navigationController presentMoviePlayerViewControllerAnimated:mp]; – 2014-10-17 08:50:41

+0

您可以为它使用MPMoviePlayerController。 – Monikanta 2014-10-17 09:04:31

+0

请检查我编辑的答案。 – Monikanta 2014-10-17 09:11:46

相关问题