iOS:在 MPMoviePlayerController 中将设备方向更改为横向时如何全屏播放视频?
Posted
技术标签:
【中文标题】iOS:在 MPMoviePlayerController 中将设备方向更改为横向时如何全屏播放视频?【英文标题】:iOS : How to Full screen video when change device orientation to Landscape in MPMoviePlayerController? 【发布时间】:2014-11-07 14:25:39 【问题描述】:我正在使用MPMoviePlayerController
开发一个应用程序。该应用程序仅支持纵向模式。但是当我将设备方向更改为横向时,我想以全屏模式更改视频,而当我将设备方向更改为纵向时,我想将视频更改为半屏。
如果在横向和全屏模式下,电影结束,则也进入半屏模式。
我尝试了不同的代码和选项,但未能成功。请帮忙。
我的源代码
@property (nonatomic,strong) MPMoviePlayerController* moviePlayer;
-(void)PlayVideoContent
CGFloat x = 0;
CGFloat y = 70;
CGRect mpFrame = CGRectMake(x, y, SCREEN_WIDTH, 200);
NSString * introVideoFileName = @"video_5.mp4";
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:introVideoFileName ofType:@""]];
MPMoviePlayerController *controller = [[MPMoviePlayerController alloc] initWithContentURL:url];
controller.scalingMode = MPMovieScalingModeAspectFill;
self.moviePlayer = controller; //Super important
// controller.view.frame = self.view.bounds; //Set the size
controller.view.frame = mpFrame; //Set the size
// [self.moviePlayer setFullscreen:YES animated:YES];
[self.view addSubview:self.moviePlayer.view]; //Show the view
[self.moviePlayer play]; //Start playing
【问题讨论】:
你的 Info.plist 是否支持横向并尝试 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation no ... 应用程序只允许 Portrait .. 因为我需要保留应用程序的其余部分 Portrait 和这个 Movie FullScreen on Landscape。 但是即使我允许横向模式,我的 Movieplayer 也无法全屏显示 【参考方案1】:你必须提供你的应用程序的UIViewController
(s) 来决定它是在landscape
还是portrait
。
之后,将其余所有设置为纵向,除了你想要的横向(MPMoviePlayerController
)
【讨论】:
【参考方案2】:在您的项目设置中(App Target > General > Deployment Info > Device Orientation),选择 Portrait、Landscape Left 和 Landscape Right。
在你的根视图控制器中,添加:
- (BOOL)shouldAutorotate
return YES;
- (NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
如果所有内容都加载到此视图控制器中,那应该就是您所要做的。如果您发现某些视图在不应该旋转时发生了旋转,请将相同的代码添加到它们的视图控制器中。
全屏视频的控制器将使用目标设置中指定的支持方向,因此将允许旋转为横向。当您关闭视频时,视图将旋转回纵向。
【讨论】:
以上是关于iOS:在 MPMoviePlayerController 中将设备方向更改为横向时如何全屏播放视频?的主要内容,如果未能解决你的问题,请参考以下文章
iOS - NSInternalInconsistencyException 在 iOS 9 和 10 上发生,但在 iOS 11 上运行良好