我有一个iPhone应用,它只在纵向模式下运行。但我想让mpmovieplayer只在横向模式下播放视频。
我怎样才能实现呢?
下面是代码。
NSString *path = [[NSBundle mainBundle] pathForResource:lblVideoName.text ofType:@"mp4" inDirectory:nil];
NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
NSLog(@"URL== %@",url);
moviePlayer = [[MPMoviePlayerController alloc]
initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleDefault;
moviePlayer.shouldAutoplay = YES;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];
你可以在它自己的视图控制器中显示电影,该控制器被设置为横向模式。
// in the VC where the user indicates he wants to see a movie...
- (void)startTheMovie {
// run a storyboard segue with a modal transition, or ...
MyMovieVC *movieVC = [[MyMovieVC alloc] initWithNibName:@"MyMovieVC" bundle:nil];
[self presentModalViewController:movieVC animated:YES];
}
// in MyMovieVC
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
(interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
// and the code that you wrote on view will appear
你可以在这个界面中包含一个解散按钮,或者,youtube的方式是让它自己解散。 你可以通过订阅完成通知来实现。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayerFinished:)
name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
然后,在完成的消息上
- (void)moviePlayerFinished:(NSNotification*)notification {
[self dismissModalViewControllerAnimated:YES];
}
注意,如果你是在一个标签式界面中做这件事,所有的标签--甚至是不可见的标签--都需要同意让界面变成横向。 这有一定的道理,但过去让我很心疼。 我没有一个漂亮的解决方案。 我的方法是在我的AppDelegate上设置一个可公开访问的BOOL isLandscapeOK。 这个MovieVC会把它设置为YES,如果isLandscapeOK==YES,其他标签VC会回答纵向或横向。