我看了之前发现了一些类似的问题。但是所提供的解决方案都不适合我,所以我要问这个。
我正在编写一个以Tab栏开头的IOS应用程序,每个选项卡View 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];
}
我已添加此帖子中的建议: Play Video In Landscape when entire application is Portait
但这并没有强制视频在横向模式下播放。我看到有关使用CGAffine的其他建议,但我的第一直觉说,这不是翻转视频的正确方法。请指教。
答案 0 :(得分:0)
我找到了解决方案。
我创建了一个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];
}
这就是我需要做的一切。