2014-10-17 56 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

相關問題