设置MPMoviePlayerController的方向

时间:2014-10-08 13:03:37

标签: ios iphone mpmovieplayercontroller uiinterfaceorientation

我的整个应用程序仅处于纵向模式,我正在我的应用程序中播放youtube视频。为你管我正在使用UIWebview。当用户点击UIWebview中的播放按钮时,它会自动启动MPMoviePlayerController。所以我没有声明任何MPMoviePlayerController对象。所以我希望MPMoviePlayerController支持纵向和横向。所以请建议。

1 个答案:

答案 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"];
}

这应该为你做,让我知道它是怎么回事。