iPhone应用程序。MPMoviePlayer: 仅在横向模式下播放视频

问题描述 投票:3回答:1

我有一个iPhone应用,它只在纵向模式下运行。但我想让mpmovieplayer只在横向模式下播放视频。

我怎样才能实现呢?

下面是代码。

    NSString *path = [[NSBundle mainBundle] pathForResource:lblVideoName.text ofType:@"mp4" inDirectory:nil];
    NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
    NSLog(@"URL== %@",url);
    moviePlayer =  [[MPMoviePlayerController alloc]
                    initWithContentURL:url];


    moviePlayer.controlStyle = MPMovieControlStyleDefault;
    moviePlayer.shouldAutoplay = YES;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
iphone objective-c ios4 mpmovieplayercontroller
1个回答
1
投票

你可以在它自己的视图控制器中显示电影,该控制器被设置为横向模式。

// in the VC where the user indicates he wants to see a movie...
- (void)startTheMovie {
    // run a storyboard segue with a modal transition, or ...
    MyMovieVC *movieVC = [[MyMovieVC alloc] initWithNibName:@"MyMovieVC" bundle:nil];
    [self presentModalViewController:movieVC animated:YES];
}

// in MyMovieVC

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
        (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

// and the code that you wrote on view will appear

你可以在这个界面中包含一个解散按钮,或者,youtube的方式是让它自己解散。 你可以通过订阅完成通知来实现。

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(moviePlayerFinished:)
name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

然后,在完成的消息上

- (void)moviePlayerFinished:(NSNotification*)notification {
    [self dismissModalViewControllerAnimated:YES];
}

注意,如果你是在一个标签式界面中做这件事,所有的标签--甚至是不可见的标签--都需要同意让界面变成横向。 这有一定的道理,但过去让我很心疼。 我没有一个漂亮的解决方案。 我的方法是在我的AppDelegate上设置一个可公开访问的BOOL isLandscapeOK。 这个MovieVC会把它设置为YES,如果isLandscapeOK==YES,其他标签VC会回答纵向或横向。

© www.soinside.com 2019 - 2024. All rights reserved.