iPhone - Цель C - Воспроизведение видео в полноэкранном режиме в альбомном режиме - PullRequest
0 голосов
/ 30 апреля 2018

Я посмотрел и нашел несколько похожих вопросов, заданных ранее. Но ни одно из предложенных решений не работает для меня, поэтому я спрашиваю об этом.

Я пишу приложение IOS, которое начинается с панели вкладок, каждая вкладка View Controller имеет встроенный Navigation Controller. Я могу транслировать видео и воспроизводить его с помощью AVPlayerViewController, но не могу принудительно запустить его в альбомном режиме (даже если телефон находится в портретном режиме. Если я переворачиваю телефон, он становится полноэкранным как альбомный режим.

Вот фрагмент кода, который у меня есть для потокового видео:

-(void) startPlayback {

  NSURL *streamURL = [NSURL URLWithString: pathToVideoStream];

  NSLog(@"Entered %s - Will now try to play video at NSURL: %@",__PRETTY_FUNCTION__, streamURL );

  AVPlayerViewController *moviePlayer = [[AVPlayerViewController alloc] init];
  moviePlayer.player = [AVPlayer playerWithURL:streamURL];
  [self presentViewController:moviePlayer animated:YES completion:nil];
  moviePlayer.view.frame = self.view.frame;
  [moviePlayer.player play];

}

Я добавил предложения из этого поста: Воспроизведение видео в альбомной ориентации, когда все приложение установлено.

Но это не заставило видео воспроизводиться в ландшафтном режиме. Я вижу другие предложения по использованию CGAffine, но мой первый инстинкт говорит, что это не может быть правильным способом перевернуть видео. Пожалуйста, совет.

1 Ответ

0 голосов
/ 30 апреля 2018

Я нашел решение для этого.

Я создал подкласс AVPlayerViewController и назвал LandscapeAVPlayerViewController. В реализации подкласса я переопределил два метода:

-(UIInterfaceOrientationMask)supportedInterfaceOrientations{

   [super supportedInterfaceOrientations];
   return UIInterfaceOrientationMaskLandscape; // allows Left and Right both
}

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationLandscapeRight;   // prefers Right in portrait mode
}

А затем, вернувшись в метод startPlayback, я изменил код на:

-(void) startPlayback {

   NSURL *streamURL = [NSURL URLWithString: pathToVideoStream];

   LandscapeAVPlayerViewController *landscapeMoviePlayerVC =  [[LandscapeAVPlayerViewController alloc] init];

   landscapeMoviePlayerVC.player = [AVPlayer playerWithURL:streamURL];

   [self presentViewController:landscapeMoviePlayerVC animated:YES completion:nil];
   [landscapeMoviePlayerVC.player play];

}

Это все, что мне нужно было сделать.

...