2

MPMoviePlayerControllerをフルスクリーンモードで起動し、デフォルトのボタンで閉じます。iOS4.3では魅力のように機能しますが、iOS5.0では黒い画面が残ります:(

私は何か間違ったことをしていますか?これが私のコードです:

プレーヤーに表示するには:

- (void)showVideo {

MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:theURL];  

// Register to receive a notification when the movie has finished playing.  
[[NSNotificationCenter defaultCenter] addObserver:self  
                                         selector:@selector(moviePlayBackDidFinish:)  
                                             name:MPMoviePlayerPlaybackDidFinishNotification  
                                           object:moviePlayer];      



moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
moviePlayer.shouldAutoplay = YES;  
moviePlayer.view.frame = [[UIScreen mainScreen] applicationFrame];
moviePlayer.view.transform = CGAffineTransformMakeRotation(1.57079633);    

[self.view addSubview:moviePlayer.view];  

[moviePlayer setFullscreen:YES animated:NO];  
}

プレーヤーを閉じるには:

- (void) moviePlayBackDidFinish : (NSNotification *) notification
{
MPMoviePlayerController *moviePlayer = [notification object];  
[[NSNotificationCenter defaultCenter] removeObserver:self  
                                                name:MPMoviePlayerPlaybackDidFinishNotification  
                                              object:moviePlayer];  

[moviePlayer.view removeFromSuperview];

[moviePlayer stop];
[moviePlayer release];  

//otherwise the status bar hides or changes color from time to time 
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
4

3 に答える 3

4

iOS5にアップデートした後、同じ問題を解決しようとしています。

  • これは私がこれまでに思いついたものです:

これは、フルスクリーン モードに入った後の MPMoviePlayerController のバグです。基本的に、フルスクリーン モードを終了することはできません。しかし、MPMoviePlayerController を削除するだけで、これは解決されるはずです。しかし、そこには運がありません...

ビデオ プレーヤーで全画面表示にした後、メイン ビューの再描画が開始されない可能性はありますか? (全画面表示でビューの再描画を一時停止すると、ビデオ再生のパフォーマンスが向上するはずです。私の知る限り、そうなるはずです。)

  • ここに解決策があります: (tkxは元の問題を抱えていた私の大学に行きます)

フルスクリーン モードに移行せず、MPMoviePlayerController を親ビューの境界まで引き伸ばします。ここでの問題は、画面を回転させると、フルスクリーン モードでの自動回転が使用されないことです。

//instead of going to fullscreen
//[moviePlayer setFullscreen:YES animated:YES];    
[moviePlayer.view setFrame:self.view.bounds];

//when the movie has finished playing release it
  • 回転の問題の解決策:

ローテーションコードを書いてください:)

于 2011-10-18T13:56:48.117 に答える
4

変化する

player.controlStyle = MPMovieControlStyleFullscreen; 

player.controlStyle = MPMovieControlStyleDefault; 

および MPMoviePlayerDidExitFullscreenNotification で

 [player setControlStyle:MPMovieControlStyleNone];
于 2011-12-26T04:44:21.830 に答える
-2
[moviePlayer stop];
[moviePlayer release];
[moviePlayer.view removeFromSuperview]; 
于 2011-10-17T14:31:36.240 に答える