横向模式下的 iPhone MPMoviePlayer

Posted

技术标签:

【中文标题】横向模式下的 iPhone MPMoviePlayer【英文标题】:iPhone MPMoviePlayer in Landscape Mode 【发布时间】:2011-02-15 13:59:38 【问题描述】:

我想在应用程序启动时以横向模式显示 MPMoviePlayer。现在它以纵向模式启动。有一些代码会强制应用程序以横向模式启动。但是据说这些代码段属于私有api,所以应用商店不接受申请。从早上开始,我就在想办法,但没有结果……有人能帮帮我吗?

这就是我所在的地方:

NSURL *url = [[NSURL alloc] initWithString:urlString];

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(videoPlayerPlaybackStateChanged:) 
                                             name:MPMoviePlayerPlaybackStateDidChangeNotification
                                           object:nil];

[self setWantsFullScreenLayout:YES];
[moviePlayer prepareToPlay];
//For viewing partially.....
moviePlayer.view.backgroundColor = [UIColor blackColor];
//[moviePlayer.view setFrame:CGRectMake(0, 0, 320, 410)];
[moviePlayer.view setFrame:[self.view bounds]];
moviePlayer.fullscreen = YES;
moviePlayer.scalingMode = MPMovieScalingModeAspectFill;


[self.view addSubview:moviePlayer.view]; 

//[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
[moviePlayer play];

提前致谢..

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

在 xCode 的 Resource 组下打开项目的 info.plist。 选择最后一行并单击 +(加号)图标。现在为值“横向(左主页按钮)”选择键“初始界面方向”。 或者您可以从单击下拉按钮时显示的列表中选择任何值。

【讨论】:

感谢您的快速回答,但我已经尝试过了。模拟器再次回到纵向模式。我没有得到原因..【参考方案2】:

如果您的所有应用都将处于横向模式,您可以在项目的 plist 中对其进行更改。如果没有,您也可以继承 MPMoviePlayerControllerView 并实现并执行类似的操作。

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
 interfaceOrientation 
  // Return YES for supported orientations.
  if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft
      || interfaceOrientation == UIInterfaceOrientationLandscapeRight) 
    return YES;
  

  return NO;

【讨论】:

好的。谢谢你。这个工作正常。但是当我将此 viewController 传递给 navigationController 时,我的意思是 [self.navigationController pushViewController: "bla bla"] ,从下一个视图返回后,它的方向仍然是横向,但视图内的内容现在是纵向的。购买方式,MPMoviePlayerView 之后的下一个视图是纵向的。【参考方案3】:

使用MPMoviePlayerViewController 而不是MPMoviePlayerController。它将处理方向、控制样式等。我参考了https://***.com/a/4911172/3346048。

MPMoviePlayerViewController *playerView = [[[MPMoviePlayerViewController alloc] initWithContentURL:videoURL] autorelease];
[self presentMoviePlayerViewControllerAnimated:playerView];

并在AppDelegate.m 中声明以下函数。这将在所有情况下将方向限制为纵向,并且仅在播放视频时才会更改:

    - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

    if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
    
        return return UIInterfaceOrientationMaskLandscape;
    


【讨论】:

以上是关于横向模式下的 iPhone MPMoviePlayer的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 的 iOS 7 中打开相机时横向模式下的方向问题

iPhone X 横向模式下的视图看起来不正确

横向模式下的 iPhone/iPod Touch 屏幕截图是不是在应用商店中以这种方式显示?

横向模式下的presentViewController宽度

横向模式下的 UIImagePicker 控制器

iOS - 横向模式下的 UIView 不旋转