横向模式下的 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 中打开相机时横向模式下的方向问题