Приложение для iPhone: MPMoviePlayer: PlayVideo только в альбомном режиме - PullRequest
3 голосов
/ 20 марта 2012

Привет, у меня есть приложение для 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];

Пожалуйста, помогите и предложите.

Спасибо

1 Ответ

1 голос
/ 20 марта 2012

Вы можете представить фильм в своем собственном контроллере представления, который настроен для альбомной ориентации.

// 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];
}

Обратите внимание, что если вы делаете это в интерфейсе с вкладками, всеВкладки - даже те, которые не видны - должны дать согласие на изменение интерфейса.Это имеет некоторый смысл, но вызвало у меня душевную боль в прошлом.У меня нет красивого решения этого.Мой подход был публично доступным BOOL isLandscapeOK на моем AppDelegate.Этот MovieVC установит его в YES, а другие VC на вкладках ответят на книжную или альбомную ориентацию, если isLandscapeOK == YES.

...