0

向きの問題を修正するための正しいコードを見つけるのに2時間費やしました。これは私のmovieplayerコードです。この特定のビューを横向きに表示する必要があります。

appdelegate ではすべての向きを設定し、rootviewcontroller では縦向きのみに設定し、movieplayer ビューでは横向きに設定しますが、運はありません。問題を修正する方法について誰かコメントをいただけますか?

- (NSUInteger)application:(UIApplication*)application supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
    return UIInterfaceOrientationMaskAll;
}

私のルートビューコントローラー

- (BOOL)shouldAutorotate
{
    return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}


-(void)prepareIntroVideo
{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"designthinking_pt1" ofType:@"mp4"]];
    self.playercontroller = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.playercontroller.view setFrame:CGRectMake(0, -20, 320, 480)];
    self.playercontroller.movieSourceType = MPMovieSourceTypeFile;
    self.playercontroller.scalingMode = MPMovieScalingModeAspectFill;
    self.playercontroller.fullscreen = NO;
       self.playercontroller.controlStyle = MPMovieControlStyleFullscreen;
    //playercontroller.controlStyle = MPMovieControlStyleFullscreen;
    self.playercontroller.view.userInteractionEnabled =YES;
    self.playercontroller.view.backgroundColor = [UIColor blackColor];
    self.playercontroller.shouldAutoplay = NO;

    //playercontroller.repeatMode = YES;
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlaybackComplete:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:self.playercontroller];


    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationDidEnterBackground)
                                                 name: UIApplicationDidEnterBackgroundNotification
                                               object:[UIApplication sharedApplication]];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationWillEnterForeground)
                                                 name:UIApplicationWillEnterForegroundNotification
                                               object:[UIApplication sharedApplication]];


    [self.playercontroller prepareToPlay];
    [self.view addSubview:self.playercontroller.view];
    [self.playercontroller setFullscreen:YES animated:YES];


    //[self.playercontroller stop];
    [self.view sendSubviewToBack:self.playercontroller.view];

}

- (BOOL)shouldAutorotate
{
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationLandscapeLeft;
}
4

2 に答える 2

2

私の例を確認できます... https://dl.dropboxusercontent.com/u/19438780/testRotate.zip

ナビゲーションコントローラーを備えた2つのコントローラーがあります-ポートレート。このために、ナビゲーションコントローラーを「サブクラス化」しました(これは縦向きの「回転」コードです)

3 番目のコントローラーは横向きです。回転させたい場合は、モーダルで表示する必要があります。それに応じて回転コードを入力してください。

于 2013-05-10T12:09:32.690 に答える
1

preferredInterfaceOrientationForPresentation数か月前にこの問題に約1週間費やしました。どのように解決したか正確には覚えていませんが、その方法の実装と関係があることは知っています

于 2013-05-09T19:32:08.440 に答える