我的整个应用程序仅处于纵向模式,我正在我的应用程序中播放youtube视频。为你管我正在使用UIWebview。当用户点击UIWebview中的播放按钮时,它会自动启动MPMoviePlayerController。所以我没有声明任何MPMoviePlayerController对象。所以我希望MPMoviePlayerController支持纵向和横向。所以请建议。
答案 0 :(得分:3)
如果您使用NavigationController
,则可以对其进行子类化并执行以下操作:
#import "MainNavigationController.h"
#import <MediaPlayer/MediaPlayer.h>
@implementation MainNavigationController
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
if ([[[self.viewControllers lastObject] presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
{
return UIInterfaceOrientationMaskAll;
}
else
{
return UIInterfaceOrientationMaskPortrait;
}
}
@end
然后您应该将应用程序设置为支持所有方向,并且此代码仅在播放电影“MPMoviePlayerController”时才允许方向更改。
在致电movie
时,您应该发送通知,因此如果用户以portrait
以外的任何方向关闭它,它会切换回portrait
。
这样的事情:
- (IBAction)playButton:(id)sender {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackDidFinish)
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.player.moviePlayer];
NSURL *url = [NSURL URLWithString:videoUrl];
self.player = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
self.player.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[self presentMoviePlayerViewControllerAnimated:self.player];
}
-(void)moviePlaybackDidFinish
{
[[UIDevice currentDevice] setValue:
[NSNumber numberWithInteger: UIInterfaceOrientationPortrait]
forKey:@"orientation"];
}
这应该为你做,让我知道它是怎么回事。