2014-01-21 11 views
6

私のプロジェクトでは、MPMoviePlayerControllerを内部に持つ埋め込みビューを使用しています。MPMoviePlayerControllerはフルスクリーンモードで動作を停止します//縦向き// iOS 7

フルスクリーントグルをタップした後、このムービープレーヤが機能しなくなります。フルスクリーンモードで1秒以上再生した後、停止してインラインモードに戻ります。

これはポートレートモードでのみ発生し、iOS 7でのみ発生します。全画面モードで横向きに切り替えてからデバイスを回転させると問題なく動作します。

私は理由を見つけました - 何とかナビゲーションバーが関係しています。私は初期化時に「NO」のプロジェクトでECSlidingViewControllerを使用して、ナビゲーションバーを半透明に設定します

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myViewController]; 

navController.navigationBar.translucent = NO; 

self.topViewController = navController; 

私はnavController.navigationBar.translucent = YES;を設定する場合は、ムービープレーヤーが正常に動作します。しかし、私は半透明= NOを持たなければならない。

私は映画プレーヤーのイベントMPMoviePlayerWillEnterFullscreenNotificationとMPMoviePlayerWillExitFullscreenNotificationでプレイしようとしました。 フルスクリーンモードに入る前にnavBarを半透明にするか非表示にすると、ビデオは少し長く再生されますが(3〜4秒程度)、動作は同じです。

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayerWillEnterFullScreen:) 
               name:MPMoviePlayerWillEnterFullscreenNotification 
               object:nil]; 


-(void)moviePlayerWillEnterFullScreen:(id)sender{ 

    [self.navigationController setNavigationBarHidden:YES animated:NO]; 

OR 
    self.navigationController.navigationBar.translucent = YES; 
} 

私はこれで何ができるのか大変感謝しています。

UPD。 このバグはiOS 7.0.4で消えました

+0

サウンドカテゴリのいくつかの種類(擬似オーバーライド)の策略があったかのようにナビゲーションバーは進行中です。そのような場合は、インターフェイスを実際には上部のUINavigationBarに依存するため、プレーヤーを使用するたびに無効にしてください。そのクラスのカテゴリーと同様に、スウィズルは無効にされていなければ混乱を残す。 – Till

+0

ありがとう@Till私はプロジェクトをチェックしました - カテゴリや他のnavBarのカスタマイズはありません。 –

+0

これには、 'UINavigationBar'の' drawRect: 'コードも含まれていませんよね? – Till

答えて

3

IMP:ARCを使用している場合は、外部のmoviePlayerを保持する必要があると思います。私はちょうどそれを自分自身の新しい財産に割り当てました。

私は2つの方法とそのために働いてみました。

自己表示を画面全体として使用している場合。

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform,   CGAffineTransformMakeRotation(M_PI_2)); 
[moviePlayer.view setFrame: self.view.bounds]; 
[self.view addSubview: moviePlayer.view]; 
[moviePlayer play]; 

と自己を使用せずに(それがフルスクリーン・プロパティを呼び出しません)あなたは全体のフルスクリーンで動作することができます表示

NSURL *url = [[NSBundle mainBundle] URLForResource:@"Robot" withExtension:@"m4v"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
moviePlayer.view.transform = CGAffineTransformConcat(moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow]; 
[moviePlayer.view setFrame:backgroundWindow.frame]; 
[backgroundWindow addSubview:moviePlayer.view]; 
[moviePlayer play]; 
+0

ありがとう。バグはiOS 7.0.4 –

+0

@ Dmitry Khryukinで消えてしまった。助けがあれば答えを受け入れるべきだ。 – python

関連する問題